乐趣区

关于mysql:Linux-下安装-MySQL-后给-root-用户设置密码

Linux 下通过 sudo apt install mysql-server 装置的 mysql,默认状况下,只能通过 root 用户或 sudo 的形式能力登录到 mysql 的 root 用户,而且无需明码,也无奈设置明码。

这是因为 mysql 默认对“mysql 的 root”用户应用 auth_socket 插件的认证。对某个 mysql 用户应用这个插件,将会只容许在本机上和该 mysql 用户的用户名雷同的零碎用户登录,这种登录形式无需也无奈设置明码。换个说法就是,默认状况下,“mysql 的 root”用户,只容许本机上同样被称作“root”的用户登录,所以装置实现后必须通过 sudo 或切换到 root 用户能力登录“mysql 的 root”用户。

这种形式可能使某些人不习惯,为了让 mysql 的 root 用户,能像平常一样,通过任意零碎用户、任意主机登录,只需将 mysql 的 root 用户验证插件批改。

则是默认状况下,mysql 的 root 用户应用 auth_socket 插件验证,无奈设置明码。

MySQL root@(none):mysql> SELECT `User`,`Host`,plugin,authentication_string FROM `user`;
+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+
| User             | Host      | plugin                | authentication_string                                                         |
+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+
| debian-sys-maint | localhost | caching_sha2_password | $A$005$P|    x1 ^Ew^A^A^X    `\rNk(N^GR9HPKy4yvB.RcWyyDuPMHGIrVSXzTjGR5BeZC85qTUP3 |
| mysql.infoschema | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED        |
| mysql.session    | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED        |
| mysql.sys        | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED        |
| root             | localhost | auth_socket           |                                                                               |
+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+

运行上面这条语句,将 root 账户的验证插件批改为 caching_sha2_password,并通过明码12345 登录

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '12345';

而后刷新权限使得设置失效

FLUSH PRIVILEGES;

设置实现后,

MySQL root@(none):mysql> SELECT `User`,`Host`,plugin,authentication_string FROM `user`;
+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+
| User             | Host      | plugin                | authentication_string                                                         |
+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+
| debian-sys-maint | localhost | caching_sha2_password | $A$005$P|    x1 ^Ew^A^A^X    `\rNk(N^GR9HPKy4yvB.RcWyyDuPMHGIrVSXzTjGR5BeZC85qTUP3 |
| mysql.infoschema | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED        |
| mysql.session    | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED        |
| mysql.sys        | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED        |
| root             | localhost | caching_sha2_password | $A$019$1^Ac!u@^Qto                                                              |
+------------------+-----------+-----------------------+-------------------------------------------------------------------------------+

这样就能够用明码登录 mysql 的 root 用户了。

有些教程会教你应用 mysql_native_password 作为验证插件,这个是旧版本 mysql 提供的插件,应用中和 caching_sha2_password 体验一样。如果不是要通过一些不兼容 caching_sha2_password 的客户端连贯 mysql 服务端,显然还是用新插件更平安。

退出移动版