一、问题分析
有时候使用数据库远程连接工具连接MySQL的时候总是连接不上,确认过账号密码正确,端口telnet端口又是通的。
Navicat Premium报错如下:
1130 - Host '192.168.0.69' is not allowed to connect to this MySQL server
看样子是没有权限。
查看MySQL->mysql->user->host字段,确实未允许我的IP地址登录。
需要给MySQL远程登录设置权限
二、解决方法
1>登录MySQL
2>
GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.0.%' IDENTIFIED BY 'passwd' WITH GRANT OPTION;
#ALL表示拥有所有权限,也可以设置某些权限,多个权限之间用,号分割。
#*.*表示全局权限,也可以指定库名称,多个库名称之间用,号分割。
#‘root’@'192.168.0.%'表示登录账号和允许登录IP,例如:
# 'root'@'localhost'表示允许root用户本地登录
# 'root'@‘%’表示允许root用户使用任何地址登录
# 'root'@'192.168.0.%'表示允许root用户在192.168.0.0/24网段登录
# ‘passwd’表示设置登录密码,同样是root用户本地登录和远程登录设置不同的话,登录密码也不同。
!最后这条命令除了设置允许登录范围之外同样也可以生成一个账号以及该账号的登录以及使用权限。
3>
USE mysql;
DELETE FROM user WHERE user=''; #删除匿名用户
FLUSH PRIVILEGES; #清空缓存
以上命令有一下作用:
1)之前使用过的匿名用户与新建用户同名,导致登录失败,删除匿名用户使之新用户生效。
2)清空匿名用户增加安全性。
3)清空缓存读取新配置生效。
这时远程登录的用户就可以使用了,如果还是不能登录的话,可以检查下MySQL->mysql->user->host是否正确,重新执行下步骤3>。
最后的最后如果上述有什么不对的地方欢迎指正,相互学习,谢谢。