MySQL 8开启root远程登录步骤详解

2020年4月3日

本文阅读时间10分钟。你会详细了解MySQL 8开启root远程登录的步骤。如果你没空,建议你看其他资料,乱枪打鸟地去试

MySQL 8与MySQL 5的登录方式有所不同。版本8允许auth socket,在linux本地登录不需要密码。

首先登录mysql。sudo mysql使用本地身份直接登录,或者mysql -u root -p里面用p密码登录。

登录后输入mysql命令

use mysql;

检查当前的用户登录限制

SELECT user,authentication_string,plugin,host FROM user;
+------------------+-------------------------+-----------------------+-----------+
| user             | authentication_string   | plugin                | host      |
+------------------+-------------------------+-----------------------+-----------+
| mysql.infoschema | $A$005$???????????????? | caching_sha2_password | localhost |
| mysql.session    | $A$005$???????????????? | caching_sha2_password | localhost |
| mysql.sys        | $A$005$???????????????? | caching_sha2_password | localhost |
| root             |                         | auth_socket           | localhost |
+------------------+-------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

发现root没有密码,验证方式是auth_socket,只能从localhost登录。

这里要背一下,必须先设置host,并且必须flush。

update user set host = '%' where user = 'root';
FLUSH PRIVILEGES;

接着修改验证方式为密码。

alter user 'root'@'%' identified with mysql_native_password by '密码';

最后可以重新检查一下用户登录限制。

本文的步骤与《mysql8.0开启远程访问》完全相同,但加了注释。

常见问题

MySQL提示”Access denied for user ‘root@localhost’ (using password:NO)”,这是说你没有输入密码。

“Access denied for user ‘root@localhost’ (using password:YES)”则是说你输入了密码,但密码错了。

MySQL的提示很怪。using password不知道是I’m using password or I used password,还是what using password。

MariaDB作为MySQL的fork,行为是一样的,只是MariaDB不提示using password。