"Host '192.168.1.104' is not allowed to connect to this MySQL server"

本文介绍了两种解决MySQL远程连接失败的方法:通过授权法允许特定IP地址连接MySQL服务器,以及通过更改用户表中的host字段实现远程登录。同时,还提供了解决防火墙导致连接失败的方法。

1. Error 1130 "Host '192.168.1.104' is not allowed to connect to this MySQL server"


>>>授权法。例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。 
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option; 
如果你想允许用户root从ip为192.168.1.101的主机连接到mysql服务器,并使用123456作为密码 
grant all privileges on *.* to 'root'@'192.168.1.101' identified by '123456' with grant option;

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


2. Error 2003 "Host '192.168.1.104' is not allowed to connect to this MySQL server (110)"

>>>修改防火墙设置: 禁止使用防火墙

### 解决 MySQL 错误 “Host is not allowed to connect”的方法 当遇到错误消息 `Host '192.168.1.199' is not allowed to connect` 时,这通常是因为 MySQL 用户权限配置不正确,或者未允许特定 IP 地址访问数据库。以下是详细的解决方案: #### 1. 检查并修改 MySQL 用户权限 可以通过以下 SQL 命令来授予指定主机的访问权限: ```sql GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'192.168.1.199' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; ``` 上述命令的作用是赋予用户 `'your_username'` 来自 IP 地址 `192.168.1.199` 的完全访问权限[^3]。 如果希望该用户可以从任何远程地址连接,则可以使用通配符 `%` 替代具体的 IP 地址: ```sql GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'%' IDENTIFIED BY 'your_password'; FLUSH PRIVILEGES; ``` #### 2. 配置 MySQL 绑定地址 默认情况下,MySQL 可能仅绑定到本地回环接口 (localhost127.0.0.1),从而阻止外部客户端连接。需要编辑 MySQL 配置文件 `/etc/mysql/my.cnf` 或 `/etc/my.cnf` 并找到如下行: ```ini bind-address = 127.0.0.1 ``` 将其更改为服务器的实际 IP 地址或设置为 `0.0.0.0`(表示监听所有网络接口): ```ini bind-address = 0.0.0.0 ``` 保存更改后重启 MySQL 服务以使新配置生效: ```bash sudo systemctl restart mysql ``` #### 3. 确认防火墙规则 确保服务器上的防火墙不会阻止来自目标 IP (`192.168.1.199`) 对 MySQL 默认端口 (3306) 的访问。可以在 Linux 上运行以下命令打开相应端口: ```bash sudo ufw allow 3306/tcp ``` 对于其他操作系统,请查阅其对应的防火墙管理文档。 #### 4. 测试连接状态 完成以上操作之后,尝试重新建立与 MySQL 数据库之间的连接,并通过调用函数验证是否存在新的异常情况: ```php $mysqli = new mysqli('192.168.1.199', 'your_username', 'your_password', 'test_db'); if ($mysqli->connect_error) { echo "Error: " . $mysqli->connect_error; } else { echo "Connection successful!"; } ``` 此脚本会显示具体失败原因以便进一步排查问题所在[^4]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值