MySQL远程连接问题解决方法
Posted 贪狼木星
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL远程连接问题解决方法相关的知识,希望对你有一定的参考价值。
问题: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)。
以上是关于MySQL远程连接问题解决方法的主要内容,如果未能解决你的问题,请参考以下文章