我刚刚在我的新 unix 系统上安装了 Mariadb(Mariadb 服务器版本 10.1.37 Debian 9.6)。我有以下用户:
+------------+-----------------------+-------------+-----------+
| user | authentication_string | plugin | host |
+------------+-----------------------+-------------+-----------+
| root | | unix_socket | localhost |
| phpmyadmin | | | localhost |
+------------+-----------------------+-------------+-----------+
我希望能够使用密码以“root”身份登录(而不是使用 unix_socket 插件)。我尝试使用 ALTER USER 命令更改为基于密码的身份验证。我使用“sudo mysql”从根帐户进入 MariaDB。然后我尝试了以下每个命令:
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED WITH
mysql_native_password BY 'mypassword';
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED VIA
mysql_native_password BY 'mypassword';
MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED VIA
mysql_native_password;
SET PASSWORD = PASSWORD('mypassword');
MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED WITH
mysql_native_password;
SET PASSWORD = PASSWORD('mypassword');
MariaDB [(none)]> ALTER USER 'root'@'localhost' IDENTIFIED WITH
mysql_native_password;
SET PASSWORD = PASSWORD('mypassword');
在所有情况下,我都会收到以下错误: ERROR 1064 (42000): 你的 SQL 语法有错误;查看与您的 MariaDB 服务器版本对应的手册,了解在第 1 行的“...”附近使用的正确语法。
将 root 登录从套接字更改为基于密码的正确语法/方法是什么?非常感谢任何帮助。
最佳答案
看来您是全新安装的 MariaDB 或 MySQL。
安装后你只需从 root 运行以下命令:
mysql_secure_install
或者:
sudo mysql_secure_install
当我阅读手册时,MariaDB 已经提供了 auth socket 功能。
所以尝试uninstall plugin :
UNINSTALL SONAME 'auth_socket';
和/或switch本地密码验证:
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;
如果它也不起作用,那么尝试清空用户表的插件字段并刷新权限:
USE mysql;
UPDATE user SET plugin='' WHERE user ='root';
FLUSH PRIVILEGES;
关于mysql - Debian 上的 MariaDB : Syntax error: How to switch unix socket authentication back to password-based?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54394618/