本文共 1494 字,大约阅读时间需要 4 分钟。
报错:1130-host … is not allowed to connect to this MySql server
你可能遇到了一个常见的MySQL远程连接问题:"1130-host … is not allowed to connect to this MySql server"。这个错误提示意味着你正在尝试从一个非本地主机(如远程计算机)连接到MySQL服务器,但MySQL拒绝了这个连接请求。
请注意,这个错误与防火墙设置无关。防火墙可能阻止某些端口,但这并不直接影响MySQL对远程连接的控制。真正的原因通常与MySQL的用户权限设置有关。
有两种主要方法可以解决这个问题:
登录MySQL:在本地计算机上打开终端或命令提示符,使用以下命令登录MySQL:
mysql -u root -p
切换到mysql数据库:
use mysql;
更新用户表中的host值:如果你尝试从远程主机连接,但MySQL拒绝允许,可能是因为用户的host值只允许本地连接(localhost)。你需要将host值更改为允许所有主机连接(即%)。
update user set host = '%' where user = 'root';
注意:如果你的用户是
root
,你可以直接将其host设置为%
,这样可以从任何主机登录。然而,如果你的用户不是root
,你需要确保他已经被赋予了足够的权限。
执行flush命令:为了确保修改生效,你需要执行flush命令:
flush privileges;
如果你只修改了root用户的权限,可能需要执行:
flush privileges;
测试连接:现在你应该可以通过远程主机连接到MySQL服务器了。你可以使用以下命令进行测试:
mysql -u root -p
如果你使用的是非root用户,请确保它已经被授权进行远程登录。
如果你不想修改root用户的host值,可以通过GRANT语句为用户授予远程访问权限。
登录MySQL:以root用户登录:
mysql -u root -p
为用户赋予权利:假设你的用户是myuser
,密码是mypassword
,且你想允许它从任何主机访问数据库。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
注意:如果你想限制某些IP地址的访问,可以将 '%' 替换为具体的IP地址(例如
192.168.1.3
)。
刷新权限:执行flush命令以确保权限生效:
flush privileges;
退出MySQL:
exit;
在某些情况下,修改用户权限可能需要重新启动MySQL服务或执行flush privileges命令。如果你在执行GRANT语句后仍然无法连接,请确保数据库服务正在运行,并且没有防火墙阻止了相关端口。
如果你想快速为root用户赋予权利,可以执行以下命令:
登录MySQL:
mysql -u root -p
赋予root用户权限:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
刷新权限:
flush privileges;
退出MySQL:
exit;
现在,你应该可以从任何主机(包括远程计算机)以root身份登录到你的MySQL服务器了。
转载地址:http://ildfk.baihongyu.com/