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

本文介绍了如何解决MySQL远程连接失败的问题,提供了更新user表、修改host字段和授权等三种方法,并详细解释了每一步的操作流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装完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,就连不上。

具体操作方法:

1、更新

用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()生成的密码在旧的版本上就可以解决此问题.

### 问题分析 用户遇到的问题是 MySQL 报错 `ERROR 1130 (HY000): Host '192.168.124.26' is not allowed to connect to this MySQL server`。此错误通常表明客户端的 IP 地址未被授权访问 MySQL 服务器。以下将详细分析并提供解决方案。 --- ### 解决方案 #### 1. 检查 MySQL 用户权限 MySQL 的用户权限是由 `user` 表和 `db` 表控制的,需要确保目标 IP 地址(如 `192.168.124.26`)已被正确授权。可以通过以下 SQL 命令检查和设置权限: ```sql -- 查看当前用户的权限配置 SELECT Host, User FROM mysql.user WHERE User = 'your_user'; -- 如果目标 IP 未被授权,添加权限 GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'192.168.124.26' IDENTIFIED BY 'your_password' WITH GRANT OPTION; -- 刷新权限以使更改生效 FLUSH PRIVILEGES; ``` 上述命令中,`'your_user'` 和 `'your_password'` 需要替换为实际的用户名和密码[^1]。 #### 2. 修改 MySQL 配置文件 如果 MySQL 服务器仅允许本地连接(默认绑定到 `127.0.0.1`),需要修改配置文件以允许远程连接。编辑 MySQL 配置文件(通常是 `/etc/my.cnf` 或 `/etc/mysql/my.cnf`),找到并修改以下内容: ```ini [mysqld] bind-address = 0.0.0.0 ``` 将 `bind-address` 设置为 `0.0.0.0`,表示允许所有 IP 地址访问。然后重启 MySQL 服务以应用更改: ```bash systemctl restart mysqld ``` #### 3. 检查防火墙规则 即使 MySQL 配置正确,防火墙也可能阻止特定 IP 地址的连接。可以使用以下命令检查和配置防火墙规则: ```bash # 检查当前防火墙规则 firewall-cmd --list-all # 允许 MySQL 端口(默认 3306) firewall-cmd --permanent --add-port=3306/tcp firewall-cmd --reload ``` 确保目标 IP 地址(如 `192.168.124.26`)能够通过防火墙访问 MySQL 服务[^2]。 #### 4. 测试连接 完成上述步骤后,可以通过以下命令测试连接是否成功: ```bash mysql -u your_user -p -h 192.168.124.26 ``` 如果连接仍然失败,可以查看 MySQL 错误日志以获取更多信息: ```bash tail -f /var/log/mysqld.log ``` --- ### 注意事项 - 如果需要允许任意 IP 地址访问 MySQL 服务器,可以将权限设置为 `'%'`,但需谨慎操作以避免安全风险。 - 在生产环境中,建议限制允许访问的 IP 地址范围,并启用 SSL 加密以保护数据传输的安全性[^3]。 --- ### 示例代码 以下是一个完整的权限设置示例: ```sql -- 创建用户并授予特定 IP 访问权限 CREATE USER 'test_user'@'192.168.124.26' IDENTIFIED BY 'password123'; GRANT ALL PRIVILEGES ON *.* TO 'test_user'@'192.168.124.26'; -- 刷新权限 FLUSH PRIVILEGES; ``` --- ###
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值