我在Ubuntu 16.04上的MariaDB上有一个root用户 .
默认情况下,root用户通过 unix_socket 身份验证插件进行身份验证 .
unix_socket
我可以通过设置将身份验证方法切换为密码方法
update mysql.user set plugin='' where user='root';
这很好用 . 但......
是否有可能通过unix_socket(root shell)或密码(当它由localhost:3306连接时)验证root用户?
一种可靠而直接的方法是创建另一个超级用户,并在想要通过密码连接时使用它 .
CREATE USER admin@localhost IDENTIFIED BY 'password'; GRANT ALL ON *.* TO admin@localhost WITH GRANT OPTION; -- etc
MySQL认为'localhost'与'127.0.0.1'不同,所以你可以为TCP设置密码而不为Unix套接字设置密码,如下所示:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY 'xxx' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION;
2 回答
一种可靠而直接的方法是创建另一个超级用户,并在想要通过密码连接时使用它 .
MySQL认为'localhost'与'127.0.0.1'不同,所以你可以为TCP设置密码而不为Unix套接字设置密码,如下所示: