发布日期:2018-03-26
ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server+ 查看更多
ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
+ 查看更多
发布日期:2018-02-24 16:33
分类:SQL
浏览次数:191
这问题应该挺简单的,但是我无论如何就是解决不了,这真是要了我的老命。我只是试图远程连接到我的MySQL服务器。
这样连接
mysql -u root -h localhost -p
上面这句话没什么问题,但是当我尝试
mysql -u root -h 'any ip address here' -p
这句的时候,就有了这样的错误
ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server
在mysql.user这张表里,user字段为'root'、host字段为'localhost'与host字段为'%'的条目相同。
我已经想破脑袋了,不知道该如何继续。任何想法都好。
回答
可能是种安全预防措施。你可以尝试添加新的管理员账户:
mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost' -> WITH GRANT OPTION; mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass'; mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%' -> WITH GRANT OPTION;
然而像Pascal等语言已经指出有一个开放给任何IP访问权限的用户不是个好主意。如果你需要一个管理员账户,用root,把它放在localhost上。对于其他的操作,指定好你需要的操作权限,并限制用户的可访问性,正如下面Pascal的建议。
编辑:
摘自MySQL FAQ:
如果你搞不清楚为什么你的访问被拒绝,从user表里把所有Host字段包含通配符的条目(包含'%'或'_'的条目)都删掉。一个很常见的错误是插入Host字段值为'%'、User字段值为'some_user'的一个条目,认为这允许你指定localhost从同一台机器连接。这不起作用的原因是默认权限包含一个Host字段值为'localhost'、User字段值为''的条目。因为这个条目的Host值'localhost'比'%'更具体,所以在从localhost连接时优先使用该条目。正确的方法是插入第二个Host='localhost'、User='some_user'的条目,或者删除Host='localhost'、User=''的条目。删除条目后,记得发送FLUSH PRIVILEGES语句以重新加载授权表。另见第5.4.4节的“访问控制,阶段1:连接验证”。