问题描述
在Windows系统中安装了监控MySQL数据库服务器性能的工具Spotlight on MySQL,利用Spotlight连接Linux服务器中的MySQL,进行相关配置如下:
点击"Connect"进行连接,连接过程中出现异常提示:
Unable to connect to "192.168.xxx.xxx"
Spotight encountered the following error during connection: Failed to connect with error: Host 192.168.xxx.1' is not allowed to connect to this MySQL server
问题分析
Host 192.168.xxx.1' is not allowed to connect to this MySQL server
选定的host不允许连接到MySQL服务器,很可能是MySQL中没有开放任意IP连接MySQL的权限,默认情况下出于安全策略的考虑并没有开放给任意IP连接MySQL
解决方案
在MySQL服务器上作如下配置:
方式1:配置指定IP的用户具备连接MySQL的权限
# 连接mysql
mysql -uroot -proot
# 使用mysql
show databases;
use mysql;
# 创建指定IP用户具备root用户权限
select host,user,password from user; # 查看user表中host和user字段的对应关系
update user set host='192.168.xxx.xxx' where user='root'; # 指定某个主机的 IP
update user set host='%' where user='root'; # 包括所有主机IP均可以root账户连接 MySQL
# 刷新权限配置,使配置生效
flush privileges;
备注:方式1执行修改权限时可能会出现提示"ERROR 1062...",但不影响本次权限的修改
方式2:直接授权任何主机以root用户均可连接MySQL
# 连接mysql
mysql -uroot -proot
# 授权root/root账户具备包括连接MySQL的权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root' WITH GRANT OPTION;
# 刷新权限配置,使配置生效
flush privileges;
以上配置生效后,再次用Spotlight连接Linux服务器上的MySQL,即可连接成功,如下:
Windows系统浏览器访问Linux服务器的IP,然后检测MySQL连接状态:连接ok
参考资料:
[1] 在windows系统连接linux系统下的mysql
[2] windows下用navicat远程链接虚拟机Linux下MySQL数据库