取消 MySQL/MariaDB root 用户免密码登录功能
该文章内容已过期或不再适用。
尽量不要使用数据库 root 用户。建议为每个数据库应用建立单独的用户。
在使用 MySQL/MariaDB 时,如果使用的是系统 root 用户,可以直接在控制台中输入
mysql |
免密码使用数据库 root 用户登录数据库。
原因
在 user
表中有一列叫做 plugin
:
select user, authentication_string, plugin from user; |
1 | +------+-----------------------+-------------+ |
其中的 auth_socket
让你能方便地作为 root 用户从控制台免密码登录。但这同时也禁用了密码登录,而且你不能使用其它客户端进行登录。
解决办法
如果必须要使用数据库 root 用户,则需要做如下修改。注意按照自己的数据库版本选择合适的命令。
MySQL
5.7
alter user 'root'@'localhost' identified by 'YOUR PASSWORD HERE'; |
8.0
待补充。
MariaDB
<10.2
set password for 'root'@'localhost' = password('YOUR PASSWORD HERE'); |
≥10.2
alter user 'root'@'localhost' identified by 'YOUR PASSWORD HERE'; |
注意事项
如果你使用的是 Ubuntu 等 Debian 系系统,还需要打开 /etc/mysql/debian.cnf 。如果其中的 user
字段是 root
,则需要将其中对应的 password
字段设置为你刚才设置的密码。 如果 user
字段不是 root
,则无需修改。