连接云服务器mysql失败,可能是因为ip发生改变,被mysql拦截。
我自己前后做了两件事。大家赶时间可直接从二开始,不放心的就从一开始到结束
一、在云服务器实例中为当前ip配置安全组权限。
1.找到当前服务器的实例,进入安全组。为其增加规则
2.访问来源点击直接选择我的ip就行,配置完成后一半两分钟就会生效,如果到这里还不能连接,请接着往下做。
二、在mysql为当前ip授权
1.通过工具连接云服务器(finalshell、xshell)
2.查看正在运行的镜像
记录下mysql 的 CONTAINER ID
docker ps
3.进入mysql容器
docker exec -it mysql容器id bash
mysql -u root -p
4.查看当前授权记录
SELECT host, user FROM mysql.user;
5.先创建用户并设置密码:
CREATE USER 'root'@'你本次被拦截的的IP地址' IDENTIFIED BY '你的mysql密码';
6.再授权
GRANT ALL PRIVILEGES ON *.* TO 'root'@'你本次被拦截的的IP地址' WITH GRANT OPTION;
7.刷新
FLUSH PRIVILEGES;
再次测试连接mysql,如果出现了2058错误,是因为 MySQL 8.0 及以上版本默认使用 caching_sha2_password
身份验证插件,而 SQLyog 等一些旧客户端可能不支持该插件则按以下方法执行即可解决。
修改用户的身份验证插件
ALTER USER 'root'@'你本次被拦截的的IP地址' IDENTIFIED WITH mysql_native_password BY '你的密码';
刷新
FLUSH PRIVILEGES;
到此问题解决,希望对大家有帮助