MySQL远程连接错误提示1130

远程连接MySQL,提示1130,多是用户不具备远程连接的资格,请先查看用户资格。

#用户root登录MySQL
mysql -u root -p  

#根据提示输入密码

#进入mysql数据库
use mysql; 

#查询用户root的访问权限
select 'host' from user where user = 'root';

#如果查询结果host=localhost,则表示用户root只能本地登录,如果结果root=%,则表示用户可以任意IP地址登录

解决办法如下

#修改root访问权限
update user set host='%' where user = 'root';

#刷新心痛权限,必要操作。
flush privileges;

再次尝试用户root远程登录,应该就可以登录服务器了。

如果还是无法登录,提示报错1251,可能和mysql版本有关,mysql8.0后的版本,数据库密码加密方式更换。

解决办法如下

#修改数据库密码加密方式
alter user 'root'@'localhost' identified with mysql_native_password by '数据库密码';

#刷新心痛权限,必要操作。
flush privileges;

如果还是无法登录,并且提示缺少表文件,那可能是你的远程访问工具版本太低,与数据库版本所不对应造成的,这种情况大多出现在访问mysql5.7版本后的数据库上。

解决办法如下

#找到数据库下的my.ini文件,在文件最后加上下述代码即可,三行代码效果一致,就是开启兼容低版本模式。

show_compatibility_56 = ON
#或
show_compatibility_56 = 1
#或
show_compatibility_56 = true

当然,你也可以直接mysql指令修改,操作如下

#查看兼容是否开启,执行下述指令
show variables like '%show_compatibility_56%';

#开启会显示on,没开启会显示off

#开启版本兼容
set global show_compatibility_56 = on;

若还是无法远程访问,可能是端口3306没有开启,请查看端口号。

要还是不行,那就放弃吧,换一个高版本的远程访问器,或者直接PHPmyadmin。