报错 "Host '192.168.209.1' is not allowed to connect to this MySQL server"

解决MySQL连接错误
本文解决在Windows下Eclipse连接Linux虚拟机中MySQL遇到的“Host不允许连接”错误。通过修改MySQL用户表中的Host字段或将特定用户权限授予所有主机,实现跨平台数据库连接。

严重: create connection error java.sql.SQLException: null, message from server: "Host '192.168.209.1' is not allowed to connect to this MySQL server" at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:964) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:897) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:886) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1040) at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2191) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2222) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2017) at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:779)**加粗样式**
前提:在window下的eclipse连接Linux虚拟机中的MySQL报错,但是用window下的
navicat可以正常连接同一数据库。
分析报错提示:Host 用户不允许连接数据库。
在这里插入图片描述
从上面的截图可以看出chyun用户只允localhost连接。
解决方案:

  1. 改表法。
    在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从"localhost"改称"%"
    mysql -u root -pvmwaremysql>use mysql;
    mysql>update user set host = ‘%’ where user = ‘chyun’;
    mysql>flush privileges;
    mysql>select host, user from user;
    在这里插入图片描述
  2. 授权法。
    例如,你想myuser使用mypassword从任何主机连接到mysql服务器的话。
    GRANT ALL PRIVILEGES ON . TO ‘myuser’@’%’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器,并使用mypassword作为密码
    GRANT ALL PRIVILEGES ON . TO ‘myuser’@‘192.168.1.3’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    如果你想允许用户myuser从ip为192.168.1.6的主机连接到mysql服务器的dk数据库,并使用mypassword作为密码
    GRANT ALL PRIVILEGES ON dk.* TO ‘myuser’@‘192.168.1.3’ IDENTIFIED BY ‘mypassword’ WITH GRANT OPTION;
    FLUSH PRIVILEGES;
### 解决 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]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值