一、 資料庫層面設定
1. 首先檢查mysql所在伺服器的防火牆,如果限制了外網對3306端口的連接配接,那麼放開限制Linux伺服器中執行,如下:
iptables -L 可以檢視目前的防火牆規則iptables -F 可以清空所有防火牆規則
2. 確定mysql的監聽位址是0.0.0.0
監聽位址是0.0.0.0 ,表示該mysql允許所有IP位址進行連接配接,這是允許遠端連接配接的基礎監聽位址是127.0.0.1,則代表該mysql隻允許所在伺服器本機連接配接,外網是無法連接配接的如何知道mysql的監聽位址是多少?執行如下指令可以檢視: netstat -nutlp|grep mysql
3. 添加遠端連接配接mysql的賬号
此步驟是必須要操作的,mysql本身的使用者隻能在本機上連接配接資料庫,外網連接配接的話,需要先添加遠端使用者并授權。在mysql指令行模式下,或者phpmyadmin中執行sql語句添加遠端連接配接使用者grant all on *.* to [email protected]'%' identified by '123456';flush privileges;
或者用以下方式也可
1. 修改配置檔案
sudo vim /etc/mysql/my.cnf把bind-address參數的值改成你的内/外網IP或0.0.0.0,或者直接注釋掉這行.
2. 登入資料庫
mysql -u root -p輸入密碼mysql> use mysql;
3. 查詢host
mysql> select user,host from user;
4. 建立host
如果沒有"%"這個host值,就執行下面這兩句:mysql> update user set host='%' where user='root';mysql> flush privileges;
5. 授權使用者
任意主機以使用者root和密碼mypwd連接配接到mysql伺服器mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;mysql> flush privileges;IP為192.168.1.102的主機以使用者myuser和密碼mypwd連接配接到mysql伺服器mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.1.102' IDENTIFIED BY 'mypwd' WITH GRANT OPTION;mysql> flush privileges;
二、 nginx層面配置
// 切換到nginx目錄# cd /usr/local/nginx// 執行安裝ssl stream等子產品# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-stream // make編譯,此處千萬注意,不要執行make install,否則将覆寫nginx檔案# make// 備份nginx# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.20200806.bak//将此次安裝的元件copy到sbin下# mv objs/nginx /usr/local/nginx/sbin/nginx//切換到sbin路徑# cd sbin//檢視nginx安裝的版本資訊,以及安裝的元件資訊# ./nginx -V//切換到配置檔案目錄# cd /usr/local/nginx/conf//備份nginx.conf檔案# cp nginx.conf nginx.conf.20200806.bak// 編輯# vim nginx.conf// 添加如下代碼,跟http同級别添加stream { upstream mysql_prod { # 資料庫的ip及端口 server 192.168.10.3:3306; } server { # 監聽的映射端口 listen 8002 tcp; proxy_responses 1; proxy_timeout 20s; proxy_pass mysql_prod; }}

感冒啦