记录使用Navicat连接阿里云远程MySQL数据库的流程,例举了其他与MySql用户权限设置的有关内容

设置服务器安全组端口放行规则

ECS云服务器安全组设置如下:
image.png
xshell设置3306端口开放

  1. # 开启端口
  2. firewall-cmd --zone=public --add-port=3306/tcp --permanent

设置Navicat

进入Navicat,新建连接,在“常规”选项卡中输入数据库开放权限时的信息
image.png
在“SSH”选项卡中远程连接服务器,填写之前请确保centos系统以及安装并启用了ssh服务,且开放了22端口
image.png

测试连接出现的问题

问题一

image.png
出现问题的原因:在数据库服务器中的mysql数据库中的user的表中没有权限(也可以说没有用户),到mysql所在的服务器上用连接进行处理
解决步骤:一定要记得在写sql的时候要在语句完成后加上;(分号)

  1. # 连接服务器
  2. mysql -u root -p
  3. # 看当前所有数据库
  4. show databases;
  5. # 进入mysql数据库
  6. use mysql;
  7. # 查看mysql数据库中所有的表
  8. show tables;
  9. # 查看user表中的数据
  10. select Host, User from user;
  11. # 修改user表中的Host
  12. update user set Host='%' where User='root';
  13. # 最后刷新一下
  14. flush privileges;

image.png

问题二

image.png
出现问题的原因:mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,
解决方法

  1. 升级navicat驱动
  2. 把mysql用户登录密码加密规则还原成mysql_native_password

这里采用方法2解决,具体步骤:

  1. # 这里的’password’是你的数据库密码,输入这两行就搞定了
  2. mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'password';
  3. mysql> flush privileges;

如果出现了1130错误,即问题一,则输入一下命令

  1. mysql> alter user 'root'@'%' identified with mysql_native_password by 'password';
  2. mysql> flush privileges;