Enable password and unix_socket authentication for MariaDB root user?
我在Ubuntu 16.04上的MariaDB上具有root用户。
默认情况下,root用户通过
我可以通过设置将身份验证方法切换为密码方法
这很好。 但是...
是否可以通过unix_socket(通过root shell)或通过密码(通过localhost:3306连接)验证root用户?
一种可靠而直接的方法是创建另一个超级用户,并在您想通过密码连接时使用它。
1 2 3 |
MariaDb / MySQL认为" localhost"与" 127.0.0.1"不同,因此您可以为TCP设置密码,而对于Unix套接字则没有密码,如下所示:
MariaDb:
1 2 3 |
MySQL / Percona:
1 2 3 |
Is there a possibility to authenticate the root user by unix_socket (by root shell) or by password (when it is connected by localhost:3306)?
在MySQL中
换句话说,同一用户/主机不能有多个身份验证插件。但是,就像其他人指出的那样,一种常见的解决方法是创建与不同的
如@ColinM所述,
这是MySQL 8.0.x的一个示例:
1 2 3 | mysql -e"CREATE USER IF NOT EXISTS 'root'@'localhost' IDENTIFIED WITH auth_socket;" mysql -e"CREATE USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '@DB_PASSWORD_ROOT';" mysql -e"CREATE USER 'root'@'::1' IDENTIFIED WITH mysql_native_password BY '@DB_PASSWORD_ROOT';" |
为了确保
1 2 |
请记住,现在建议创建一个单独的非root用户,以与phpMyAdmin或Adminer等数据库管理工具一起使用。
从10.4开始,您可以简单地运行: