关于mysql外部访问报错的问题

在平时各种各样的开发中,MySQL是必不可少的工具,直接使用命令行写sql语句操作,简单的逻辑处理还可以,如果遇到复杂的问题,简直不要太麻烦,这里推荐两个我常用的可视化管理工具
Navicat 和 phpMyAdmin
工具简单好用易上手,很多小伙伴在连接测试时,发现报1045,以及1130错误

关于mysql外部访问报错的问题

文章插图
Navicat提示的错误
SQL Error (1130): Host ‘xxx’ is not allowed to connect to this MySQL server
结合我日常遇到的问题,我简单统计了一下,常见原因有2点
1,mysql密码错误
2,外部连接没有设置权限
针对第一点
第一步停止mysql服务
/etc/init.d/mysqld stop
第二步跳过密码验证
/usr/bin/mysqld_safe --skip-grant-tables 或者 mysqld_safe --skip-grant-tables
跳过权限表启动mysql
第三步,新开一个窗口修改新密码
use mysql;
update user set password=password("new_pass") where user="root";
flush privileges; 注意刷新权限
(flush privileges 命令是将当前user和privilige表中的用户信息/权限设置从mysql库中提取到内存里 。MySQL 用户数据和权限有修改后,我们希望在"不重启MySQL"的情况下直接生效,那么就需要执行这个命令 。通常是在修改ROOT帐号的设置后,怕重启后无法再登录进来,那么直接flush之后就可以看权限设置是否生效 。避免风险)
注意,如果只是忘记密码,使用上述修改没有问题,但如果是之前误操作把localhost记录删掉了,那么直接insert into user (user,host) values ('root','localhost') 添加一条,是不行的,因为涉及到了很多权限,这些权限要设置成Y
关于mysql外部访问报错的问题

文章插图
 
针对第二点
权限问题很好处理了,直接use mysql,修改一下即可
update User ser Host = '%' and User = 'root' and Host = 'localhost'
flush privileges
注意,如果是在运营商设置了防火墙安全组白名单之类的,需要把自己的ip和3306端口加进去

【关于mysql外部访问报错的问题】


    推荐阅读