天天看點

3306端口_Nginx轉發指向資料庫映射端口并對外開放通路權限

一、 資料庫層面設定

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;   }}
           
3306端口_Nginx轉發指向資料庫映射端口并對外開放通路權限

感冒啦

繼續閱讀