MySQL8设置远程连接的正确方式

·MySQL ·MySQL8 ·数据库

mysql8官方称速度是mysql5.x的两倍,所以必须升级为mysql8!但mysql8远程登录的方式变了,mysql5是密码登录mysql_native_password,而8默认变成了caching_sha2_password,因此安装完mysql8设置远程登录后,使用navicat等图形工具连接是是会失败的,现在告诉大家如何有效转为mysql_native_password来进行远程连接。
开始之前,确保你当前的登录用户为root。首先,先编辑配置文件,命令:

sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
将以下内容更改成如下所写,这将允许在任何主机访问到远程mysql:
bind-address = 0.0.0.0
mysqlx-bind-address = 127.0.0.1
若在文件中找不到“bind-address”等内容,可以忽略此步骤。接着,进入mysql,并且切换到mysql系统数据库,创建一个允许远程主机访问的root用户:
mysql -u用户名 -p密码 //如果首次安装mysql,通常还没有设置密码,直接输入mysql;否则输入安装mysql过程中设置的密码
use mysql;
CREATE USER 'root'@'%' IDENTIFIED BY '你的root用户密码';
这样即可。但是,这样你将在mysql.user表中拥有两个root,一个是事先存在的本机localhost访问的root,一个是刚刚我们创建的允许任何主机访问的root。所以,你也可以通过以下sql直接更改本机root用户,这样就只存在一个允许远程访问的root用户了:
update user set host = '%' where user = 'root';
之后,给这个root授权,并且更改为mysql_native_password的验证方式:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '你的root用户密码';
如果你在执行"AlTER USER..."时报错,请先执行一下“FLUSH PRIVILEGES;”,然后继续尝试。最后退出mysql交互,重启mysql服务:
sudo service mysql restart
这个时候便大功告成,可以在任意主机上使用密码远程连接mysql8服务了。另外要说的是,可以省略开始时的那个步骤,就是修改mysqld.cnf的bind-address这一步可以忽略,但我没有忽略,各位可以自行试试。

来自:计算机系统与软件工具
更新于2022-05-22 16:28:31 发表于2022-03-11 17:24:34


发表您的评论





公元2024年甲辰龍年,平安健康、龍行天下!