起因:使用 Navicat 数据库软件连接时报错,无法连接,有明确的报错。
报错信息:MySQL ERROR 1130 (HY000): Host ‘XXXX’ is not allowed to connect to this MySQL server
初步分析:根据错误信息,百度各种方法并实践后,发现是mysql的user表损坏导致。
修复过程:
1、找到mysql的my.ini 文件,在[mysqld] 增加一行
skip-grant-tables #跳过数据库权限验证
2、连接对应数据库,执行mysql代码
执行代码:
mysql>use mysql;
#修复user数据表
mysql> REPAIR TABLE mysql.user;
#查看下用户情况
mysql> select host, user from user;
# 重新添加一个myuser用户,密码为mypassword
create user 'myuser'@'localhost' identified by 'mypassword';
#赋予全部权限
grant all privileges on mysql_db.* to 'root'@'localhost';
#刷新权限
flush privileges;
3、取消 skip-grant-tables
见步骤1,删除行或者在行前增加 # 号。
4、重启Mysql服务
5、登陆验证,发现添加的新账户数据库权限不足,需要给账户添加数据库相关权限。
打开mysql数据库的user表,找到myuser的信息,将相关字段(password_expired,is_role 字段除外)的N都改成Y。
6、重新连接数据库,可以正常访问了。
参考资料:
Mysql报错localhost is not allowed to connect
MySql 中 skip-grant-tables(跳过权限验证的问题)
mysql错误 #1194 – Table is marked as crashed and should be repaired错误修复
mysql错误 #1044-Access denied for user ‘root’@’localhost’ to database