mysql - Debian 上的 MariaDB : Syntax error: How to switch unix socket authentication back to password-based?

标签 mysql unix mariadb alter unix-socket

我刚刚在我的新 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

More info here


当我阅读手册时,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/

相关文章:

mysql - 我正在努力准备好声明,其中

mysql - 我应该什么时候打开/关闭与数据库的连接? (MariaDB/node.js)

php - 从用双引号字段括起来的 cvs 加载数据 INFILE

php - 移动了 WordPress 并更改了图像链接,但它们不起作用

mysql - Codeigniter 新手问题——事件记录和结果?

MySQL:与多个 Count 和 Group By 联合

perl - 当 Perl 中的警报触发时,我应该如何清理挂起的孙子进程?

unix - 共享内存在哪里分配?

linux - 如何使用变量作为 Unix find 命令的路径参数?

MySQL/MariaDB 事件优化数据库表