1.背景
安装好 mysql 后,一般会使用客户端连接(必须Navcat)。本文描述了怎么设置远程连接。
2.思路
- 修改 root 账户的 host 等于 %
- 防火墙增加3306端口
- 处理密码的加密方式
3.操作
3.1 修改 root 账户的 host 等于 %
先看下 用户表的信息
use mysql;
select host, user from user;
注意:这里的 root 账户的 host 的值是 localhost
开始修改,执行:
mysql> use mysql;
mysql> update user set host = '%' where user = 'root';
修改后:
注意:这里的 root 账户的 host 的值变成了 %
% 这个百分号表示的意思是任意机器都可以连接,也可以缓存你机器的固定ip。
3.2 重启 mysql
systemctl stop mysqld.service
systemctl start mysqld.service
3.3 为防火墙添加 3306 端口
# 为防火墙添加 3306 端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
firewall-cmd --reload
高高兴兴的打开连接,发现:does not support authentication protocol
不得已,继续开始设置
select host,user,plugin,authentication_string from mysql.user;
3.4 处理密码的加密方式
发生这个问题的原因是 密码的加密方式 的问题。
先看下现在的密码的加密方式
select host,user,plugin,authentication_string from mysql.user;
注意:下图中的 plugin = cacheing_sha2_password 方式
执行命令修改密码,顺道更改加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Spri636!';
看下修改后样子
执行 select host,user,plugin,authentication_string from mysql.user;
注意:上图中的 plugin = cacheing_sha2_password 方式