MySQL远程连接问题解决方法

时间:2022-10-12 04:33:39

问题:Host 'XXX' is not allowed to connect to this MySQL server.

原因分析:

1.登录到mysql:
在开始目录下管理员身份运行【MySQL 5.7 Command Line Client】
Enter password: ********
输入密码:xxxxxx
2.查看user表:
mysql> use mysql;
mysql> select host,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| localhost | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
3 rows in set (0.00 sec)

user表中host、user字段标识了可以访问数据库的主机和用户。当前的数据就表示只能本地主机localhost通过root用户访问。
而通过ip等远程连接不允许连接。

解决方法:

为了让数据库支持远程主机访问,有两种方法可以开启远程访问功能。

第一种(改表法):
修改user表中的host字段值,将localhost修改成安装mysql数据库的ip地址。或者直接修改成%。%表示所有主机都可以通过root用户访问数据库。
mysql> update user set host= '%' where user = 'root';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1 Changed: 0 Warnings: 0

mysql> select host ,user from user;
+-----------+---------------+
| host | user |
+-----------+---------------+
| % | root |
| localhost | mysql.session |
| localhost | mysql.sys |
+-----------+---------------+
3 rows in set (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

第二种(授权法):
如果你想root使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.3' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

输入命令mysql> flush privileges;
回车使刚才的修改生效,再次远程连接数据库成功。

附注:

window 防火墙务必要开放MySQL连接的端口(默认3306)。