1. 程式人生 > >解決navicat無法通過3306訪問遠端mysql問題

解決navicat無法通過3306訪問遠端mysql問題

首先防火牆開放3306
編輯
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf 
註釋 bind-address = 127.0.0.1 新增 skip-name-resolve

允許非本地登陸

mysql -u root -p
mysql>use mysql;
檢視root賬號的登入許可權
mysql>select host, user from user;
修改登入許可權
mysql>update user set host = '%' where user = 'root';
重新整理,生效,最後一步,至關重要
mysql>flush   privileges;

注意,以上修改以後,會導致 mysql -h localhost -u root 無法登陸了,所以統一賬號加密碼登陸方式(mysql -u root -p)
接下來:繼續參考https://stackoverflow.com/questions/39281594/error-1698-28000-access-denied-for-user-rootlocalhost

$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> SELECT User, Host, plugin FROM mysql.user;

+------------------+-----------------------+
| User             | plugin                |
+------------------+-----------------------+
| root             | auth_socket           |
| mysql.sys        | mysql_native_password |
| debian-sys-maint | mysql_native_password |
+------------------+-----------------------+

修改方法一:
$ sudo mysql -u root # I had to use "sudo" since is new installation

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit;

$ service mysql restart

這樣,就可以通過Navicat直接通過3306遠端登陸了