远程连接mysql报错ERROR 1130: host localhost not allowed to connect to this MySQLserver

本文详细介绍了如何解决MySQL远程连接时出现的ERROR 1130错误,包括停止MySQL服务、修改配置文件、使用root用户登录、更新用户权限、修改密码等步骤。

1、用root用户登录mysql数据库

(1)停止MySQL服务,执行net stop mysql;

(2)在mysql的安装路径下找到配置文件my.ini,

	找到[mysqld]
		  
	输入:skip-grant-tables,保存

(3)重启mysql服务,net start mysql;

(4)执行mysql -uroot -p,回车,再回车,即可进入mysql数据库;

2、本机登入mysql

更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从”localhost”改称’%’。

mysql>use mysql;

查询出数据库的用户名

mysql>select host,user,password from user;

把用户表里面的host项改为“%”

mysql>update user set host = '%' where user ='root';

mysql>flush privileges;    #刷新用户权限表

mysql>select host,user,password  from user where user='root';

3、插入本地登录的用户

mysql>insert into user values('localhost', 'root', '', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y', 'Y','','','','',0,0,0,0,'','');

此时本地连接的用户localhost密码为空

4、修改root密码

用update方式修改root密码正常

mysql> update user set password=password("123456") where user="root";

mysql>flush privileges; 

5、退出MySQL,

在配置文件中注释:skip-grant-tables,重启mysql服务

6、本地重新连接mysql数据库

输入修改后的密码,连接成功

MySQL 错误 `ERROR 1130 (HY000): Host 'localhost' is not allowed to connect to this MySQL server` 通常表明 MySQL 服务器拒绝了本地主机的连接请求。这种情况可能由多种原因引起,包括权限配置问题、用户表配置错误或服务启动参数异常等。以下是几种常见的解决方案: ### 使用 skip-grant-tables 参数重置权限 当 MySQL 服务器的权限配置导致无法正常登录时,可以使用 `skip-grant-tables` 参数来启动 MySQL 服务,从而跳过权限检查,直接登录数据库并修改权限设置。 1. **编辑配置文件**:在 MySQL 的配置文件 `my.ini` 中的 `[mysqld]` 部分添加 `skip-grant-tables` 参数,如下所示: ```ini [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock skip-name-resolve skip-grant-tables ``` 2. **重启 MySQL 服务**:保存配置文件后,重启 MySQL 服务以应用更改。 3. **登录 MySQL**:此时可以无需密码直接登录 MySQL: ```bash mysql -u root ``` 4. **更新用户权限**:在 MySQL 提示符下,执行以下命令来更新用户权限: ```sql FLUSH PRIVILEGES; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password'; ``` 5. **移除 skip-grant-tables 参数**:完成权限更新后,记得从 `my.ini` 文件中删除 `skip-grant-tables` 参数,并再次重启 MySQL 服务以恢复正常操作[^1]。 ### 修改 mysql.user 表中的 host 字段 如果 MySQL 服务器不允许从远程主机连接,而只允许本地连接,可以通过修改 `mysql.user` 表中的 `host` 字段来解决这一问题。 1. **登录 MySQL**:使用具有足够权限的账户登录 MySQL。 2. **切换数据库**:执行以下命令切换到 `mysql` 数据库: ```sql USE mysql; ``` 3. **更新用户表**:将 `user` 表中 `root` 用户的 `host` 字段值从 `localhost` 更改为 `%`,表示允许从任何主机连接: ```sql UPDATE user SET host = '%' WHERE user = 'root'; ``` 4. **刷新权限**:执行以下命令使更改立即生效: ```sql FLUSH PRIVILEGES; ``` 5. **验证更改**:通过执行以下命令验证 `host` 字段是否已成功更新: ```sql SELECT host, user FROM user; ``` 6. **重启 MySQL 服务**:为了确保所有更改都已正确应用,建议重启 MySQL 服务[^4]。 ### 检查并更新用户表中的认证信息 如果 `mysql.user` 表中的 `authentication_string` 或 `password` 字段为空或设置不当,也可能导致连接失败。可以通过更新这些字段来解决问题。 1. **登录 MySQL**:使用具有足够权限的账户登录 MySQL。 2. **切换数据库**:执行以下命令切换到 `mysql` 数据库: ```sql USE mysql; ``` 3. **更新用户表**:确保 `authentication_string` 和 `password` 字段正确设置: ```sql UPDATE user SET authentication_string = PASSWORD('your_password'), password = PASSWORD('your_password') WHERE user = 'root'; ``` 4. **刷新权限**:执行以下命令使更改立即生效: ```sql FLUSH PRIVILEGES; ``` 5. **重启 MySQL 服务**:为了确保所有更改都已正确应用,建议重启 MySQL 服务[^2]。 通过以上方法,可以有效解决 MySQL 连接错误 `ERROR 1130 (HY000): Host 'localhost' is not allowed to connect to this MySQL server`。如果问题仍然存在,建议检查 MySQL 的日志文件以获取更多详细的错误信息,以便进一步诊断问题所在。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值