MySQL授权允许连接之ERROR 1130 (HY000)

本文详细解析了MySQL错误1130(HY000)的问题,即主机'Lenovo-PC'未被允许连接到此MySQL服务器。通过调整root用户的权限设置,允许特定IP地址连接,并刷新权限,最终解决了连接问题。

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

ERROR 1130 (HY000): Host 'Lenovo-PC' is not allowed to connect to this MySQL server

MySQL授权允许连接之ERROR 1130 (HY000)

C:\Users\Lenovo>mysql -h 10.255.9.79 -u root -p034039
Warning: Using a password on the command line interface can be insecure.
ERROR 1130 (HY000): Host 'Lenovo-PC' is not allowed to connect to this MySQL server

C:\Users\Lenovo>mysql -h localhost -u root -p034039
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 54
Server version: 5.6.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

大家从上面这段信息中可以看出当使用h参数为本机的ip地址时,mysql不允许该客户端连接,这是为什么呢?

看下面这段sql查询:

mysql> use mysql
Database changed
mysql> select user,host from user;
+------+-----------+
| user | host      |
+------+-----------+
| root | 127.0.0.1 |
| root | ::1       |
|      | localhost |
| root | localhost |
+------+-----------+
4 rows in set (0.00 sec)

root用户只允许在127.0.0.1和localhost上进行连接,而不允许使用本机在局域网中的ip进行连接。。。

这样就明白为什么不允许连接的原因了。

下面就要给root用户相应的登陆权限

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.255.9.79' IDENTIFIED BY '034039' WITH GRANT OPTION;
Query OK, 0 rows affected (0.23 sec)

mysql> select user,host from user ;
+------+-------------+
| user | host        |
+------+-------------+
| root | 10.255.9.79 |
| root | 127.0.0.1   |
| root | ::1         |
|      | localhost   |
| root | localhost   |
+------+-------------+
5 rows in set (0.00 sec)

mysql>

通过这条授权语句,

mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.255.9.79' IDENTIFIED BY '034039' WITH GRANT OPTION;

允许地址10.255.9.79上用root用户,密码034039来连接mysql的所有数据库,付给select,insert,update,delete权限。

最后刷新一下权限:

mysql> flush privileges;
Query OK, 0 rows affected (0.68 sec)

OK,这样就完成了授权。

C:\Users\Lenovo>mysql -h 10.255.9.79 -u root -p034039
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 55
Server version: 5.6.21 MySQL Community Server (GPL)

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>
### 解决 MySQL Error 1130 的方法 MySQL 错误 `ERROR 1130 (HY000)` 表示客户端尝试连接到数据库时被拒绝访问。通常是因为用户的权限设置不正确或者主机名配置有问题。 #### 权限问题分析 当遇到此错误时,可能的原因之一是用户账户未授予从特定主机(如 `127.0.0.1` 或其他 IP 地址)连接的权限[^1]。可以通过以下 SQL 命令来检查并修改用户权限: ```sql -- 查看当前用户的权限 SHOW GRANTS FOR 'root'@'localhost'; -- 如果需要允许 root 用户从任何地方连接,则可以执行如下命令 GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'your_password' WITH GRANT OPTION; -- 刷新权限以使更改生效 FLUSH PRIVILEGES; ``` 需要注意的是,在某些情况下,即使指定了 `127.0.0.1` 而不是 `localhost`,也可能因为解析机制的不同而导致不同的行为[^3]。因此建议明确指定 IP 地址而非依赖于默认名称解析。 #### 配置文件调整 如果上述操作仍未能解决问题,还需确认 MySQL 配置文件中的绑定地址是否正确。打开 `/etc/mysql/my.cnf` 文件找到 `[mysqld]` 下面的部分,并确保有如下行存在: ```ini bind-address = 0.0.0.0 ``` 这一步骤使得 MySQL 可接受来自任意网络接口上的请求而不是仅仅局限于本机回环设备(`127.0.0.1`) [^4]. 最后重启服务让改动生效: ```bash sudo systemctl restart mysql.service ``` 通过以上措施应该能够有效处理大部分关于 Host 不匹配引发的连接失败情况即所谓的 "Error Code: 1130". ### 注意事项 尽管将 bind-address 设置为 0.0.0.0 方便远程管理,但从安全角度考虑并不推荐这样做除非绝对必要;另外也要记得防火墙规则需开放相应端口给外部访问者使用.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值