踩坑!Navicat連接云服務器數據庫
前言:
使用Navicat連接遠程服務器經常遇到各種問題,在這里記錄一下。
云服務器:CentOS 7.9
Mysql:8.0.24

步驟:
云服務器官網配置防火墻
以騰訊云為例,在防火墻配置中,確認開啟了3306 Mysql服務端口

2. 進入云服務環(huán)境,配置Mysql授權
????2.1:默認情況下,mysql用戶不允許從遠程登錄,只能在localhost登錄。需要我們進入mysql進行授權。
?? ?登錄mysql:mysql - u root -p?
????切換mysql數據庫:use mysql;
????查詢user表用戶信息:select user,host from user;

默認情況下我們的root用戶的host是localhost,為了可以遠程連接mysql,需要將host設置為%。(%表示任何ip都可以連接到mysql)
????修改root用戶的host:
????????update user set host='%' where user='root' and host='localhost';
? ??賦予任何主機上以root身份訪問數據的權限:
????????grant all privileges on *.* to root@'%' with grant option;
????????FLUSH PRIVILEGES;
然后退出mysql環(huán)境,在本地打開Navicat,輸入云服務的Mysql用戶名和密碼即可。

3. 理論上按照上述步驟就可以連接成功了,但是如果仍然無法連接成功,請繼續(xù)往后看看樓主踩過的坑。。。
常見問題:
Can't connect to MySQL server on 'xx.xx.xx.xx' (10060 "Unknown error")
Host 'xx.xx.xx.xx' is not allowed to connect to this Mysql server
Host'::1' is not allowed to connect to this MySQL server


首先要確保上述云服務器防火墻,mysql配置已經正確配置。
然后進入到云服務器環(huán)境中,找到自己的mysql配置文件,一般是在etc目錄下的my.cnf。
在[mysqld]下新增 bind-address=0.0.0.0
代表允許所有IP訪問Mysql。然后重啟Mysql服務: systemctl restart mysql

如何Navicat仍然無法連接Mysql,請使用萬能大法,重啟云服務器,重啟Navicat,卸載重裝Mysql。
