mysql远程连接:ERROR 1130 (HY000): Host '*.*.*.*' is not allowed to connect to this MySQL server解决办法

安装完MySQL后,远程连接数据库的时候,出现 ERROR 1130 (HY000): Host '192.168.0.1' is not allowed to connect to this MySQL server提示信息,不能远程连接数据库。考虑可能是因为系统数据库mysql中user表中的host是localhost的原因,于是,我尝试把这个值改为自己服务器的ip,果然就好用了,不过用 mysql -u root -p命令就连不上数据库了,需要用mysql -h 服务器ip -u root -p因为默认的连接mysql数据库user表中host的值,而这个命令的默认host是localhost,就连不上了。

具体操作方法:

用localhost连接上mysql后,
use mysql;
update user set host='123.456.789.254';(IP为你想要远程连接数据库的本地机器的IP)
\q;

退出mysql,然后重新启动mysql就可以了。

其他解决方案

2. 改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 "mysql" 数据库里的 "user" 表里的 "host" 项,从"localhost"改称"%"
mysql -u root -pvmware
mysql>use mysql;
mysql>update user set host = '%' where user = 'root';
mysql>flush privileges;
mysql>select host, user from user;

3. 授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器,并使用mypassword作为密码
GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'192.168.0.1' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;


***********************************************************************
phpMyAdmin说是用户名密码的问题,这就奇怪了,root用户名密码肯定没有问题,而且通过命令行连接没有问题。又仔细查看配置文件,还是没有问题。于是去搜了一下,找到这个解决方法.

先用root登录MYSQL服务器,执行
mysql>set  password  for  你要用的用户名@"localhost"=old_password('这个用户的密码');

原因是因为你使用的mysql服务器版本中使用了新的密码验证机制,这需要客户端的版本要在4.0以上,原来的密码函数被改为old_password();,这样使用password()生成的密码在旧的版本上就可以解决这个问题了.

转自:http://blog.sina.com.cn/s/blog_4ee4286501000c45.html

### 解决方案 当遇到 `ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server` 错误时,这通常意味着目标主机上的用户账户没有被授权从指定 IP 地址连接MySQL 数据库服务器[^1]。 #### 授权特定 IP 连接的方法 可以通过以下方式授予特定 IP 的访问权限: 1. **创建新用户并授予权限** 使用 MySQL 命令行工具进入数据库管理界面,并执行如下 SQL 脚本: ```sql CREATE USER 'your_username'@'10.8.0.5' IDENTIFIED BY 'your_password'; GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'10.8.0.5' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 上述脚本中的 `'your_username'` 和 `'your_password'` 需要替换为您希望设置的实际用户名和密码。`'10.8.0.5'` 是需要授权的具体客户端 IP 地址[^2]。 2. **修改现有用户的权限范围** 如果已经存在该用户但未分配给特定 IP,则可以更新其权限配置: ```sql GRANT ALL PRIVILEGES ON *.* TO 'existing_user'@'%' IDENTIFIED BY 'password_for_existing_user' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` 此处 `%` 表示允许任何 IP 地址连接至数据库服务。 3. **检查防火墙规则** 确认服务器端的防火墙已开放必要的端口(默认情况下为 3306),以便外部设备能够通过网络建立 TCP/IP 连接[^1]。 4. **调整超时参数** 对于长时间闲置可能导致断开的情况,可适当延长某些会话保持时间变量如 `wait_timeout` 或者 `interactive_timeout` 来减少意外中断的可能性[^3]: ```sql SET GLOBAL wait_timeout=3600; ``` 以上操作完成后重新测试连接功能即可验证问题是否得到解决。 ### 注意事项 如果仍然无法解决问题,请确认 mysql 用户表中是否存在针对旧版加密算法的支持情况,因为全局设定可能强制 PASSWORD 函数采用过期的方式处理散列值[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值