阿里云建立mysql遠程訪問,ubuntu18.04防火墻3306端口

因為項目需要,在阿里云申請了一個服務器
通過遠程連接,安裝mysql-創(chuàng)建數據庫-創(chuàng)建用戶-設定用戶可以被在任意主機上進行連接-使用navicat新建連接-測試-連接失??;
查找原因:

  • 阿里云防火墻沒有開啟3306端口


    image.png

    打開控制臺-安全-防火墻-開啟-重啟服務器-測試連接-失敗

  • ubuntu18.04 未開啟3306端口對外部訪問的過濾導致外部訪問無法進入,通過netstat命令,檢查3306端口,果然只有一個127.0.0.1:3306的監(jiān)聽端口

ub64@ub64-1804-1:~$ netstat -ntpl
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -

檢查是否配置mysqld.cnf文件,bind-address的設置值問題

vim /etc/mysql/mysql.conf.d/mysqld.cnf
 
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1

把bind-address修改成0.0.0.0,無限制,重啟服務器,重新檢查netstat,3306端口的訪問已經有所有來源地址的監(jiān)聽了。

ub64@ub64-1804-1:~$ netstat -ntpl
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -

重啟數據庫,繼續(xù)測試,還是連接失敗;

  • 防火墻問題,檢查防火墻通過規(guī)則,果然grep一下沒有見到3306的端口記錄。
ub64@ub64-1804-1:~$ sudo iptables -L -n | grep 3306
ub64@ub64-1804-1:~$ 
···
iptables新增一條3306的端口允許通過規(guī)則,在重新檢查一下iptables,這下有了。
···
ub64@ub64-1804-1:~$ sudo iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 3306 -j ACCEPT
 
ub64@ub64-1804-1:~$ sudo iptables -L -n | grep 3306
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:3306
ub64@ub64-1804-1:~$

重新測試程序,程序訪問成功。mysql的訪問,不僅要設置user表用戶的訪問控制權限,還要設置mysqld.cnf的bind-address,同時系統(tǒng)防火墻規(guī)則也要配置好3306的端口通過權限。這3個地方的控制缺一不可

(補充:表用戶訪問控制權限更改----改表法:
登錄MySQL:mysql -uroot -p ,輸入密碼,登陸進去
選擇mysql表,將host只能本地訪問的 localhost 改為 %

mysql>use mysql;   

mysql>update user set host="%" where user="chase";  

mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| %         | chase            |
| localhost | debian-sys-maint |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
+ rows in set (0.00 sec)
mysql>flush privileges;  //刷新權限

mysql>exit;

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容