1.设置mysql访问权限

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> select host,user from user;
+-----------+------------------+
| host      | user             |
+-----------+------------------+
| localhost | root             |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
+-----------+------------------+
4 rows in set (0.00 sec)


localhost有root权限,修改权限

update user set host = '%' where user ='root'; #修改权限
flush privileges;#刷新

2.检测云服务器是否开启了3306端口,这个端口是mysql对外的映射端口
在这里插入图片描述
阿里云服务器在工作区中,找到网络与安全,点击安全组,入方向添加mysql3306端口
在这里插入图片描述

3.navicat连接mysql

在这里插入图片描述
先用SSL先连接上服务器,主机填云服务器公网ip,密码填服务器密码,点击确认

在这里插入图片描述
主机或ip填云服务器ip,密码填mysql密码,点击确认。

注意:确保SSH的服务器ip正确和服务器登录密码正确,同时在常规页面下数据库密码正确,然后点击测试连接。不要在SSH页面填入ip和密码后就马上测试连接,会报1045 Access denied,因为这时你还没配置数据库密码,折腾了两小时,试了网上的方法,都不行,我真服了我这老六。

简单来说,就是先填SSH部分,再填常规部分,最后测试连接,连接成功就可以连接数据库了

如果出现1045错误,那就是还没有给远程登录权限

解决步骤:

  1. 在docker中登录进入mysql
docker exec -it mysql bash
mysql -uroot -p
#输入密码

#进入到mysql
use mysql;
select host, user, authentication_string, plugin from user;
 
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
(设置远程登录密码123456,密码别设置的太简单,否则知道你服务器ip就随便登录你的mysql了,不然就给服务器3306端口加上来源限制,真的血的教训)

// 设置远程连接权限
grant all on *.* to 'root'@'%';

//刷新权限
flush privileges;
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐