1.先看看服务开没开启
sudo systemctl status mysql;
上图显示已开启,若未开启则先开启服务。
2.连接前应该先把服务器的各种参数更改一下
1)首先查看一下服务器监视的端口(如果还没开启3306端口的话,得先去云服务器控制器防火墙那边把mysql的3306端口打开)
netstat -anpt; //查看一下当前监听的端口
显示如下图所示:
若出现127.0.0.0:3306,说明监听的是本地地址。
需要在mysql配置文件中将bind-address选项设置为bind-address = 0.0.0.0,重启mysql。
sudo vim /etc/mysql/my.cnf
加上以下内容即可
重启服务
sudo service mysql restart;
此时再次查看端口显示:
2)查看用于远程访问的mysql用户权限是否正确。
登录服务器的mysql
use mysql;
select user,host from mysql.user;
%表示允许所有机器访问。若host为127.0.0.1/localhost,那么这个用户就只能本机访问,则需要将host改为%,执行以下操作
update user set host='%' where user='root';
3.此时试着用sqlyog连接服务器
又出现了错误:
查询得知:sqlyog连接8.0以上的MySQL会出现2058错误,提示密码是乱码。原因是mysql 密码加密方法变了。
网上找的解决方法如下:命令行下登陆到MySQL数据库,输入以下命令:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password';//password就是填你自己mysql的密码
再次测试,终于成功了!其实我一开始就试过上面那个命令,但当时其实不明白这是在干嘛,很多网上的教程只是说明操作(也可能我没找到对的教程),其实没说明为啥要这样做。这样其实前置问题还没解决就开始下一步,必定会出错误。
参考资料:
https://jingyan.baidu.com/article/380abd0a3aef431d90192c33.html
https://blog.csdn.net/kongsuhongbaby/article/details/84671909