Mysql Debian上的MariaDB:语法错误:如何将unix套接字身份验证切换回基于密码的身份验证?
我刚刚在我的新unix系统(Mariadb服务器版本10.1.37 Debian 9.6)上安装了Mariadb。我有以下用户:Mysql Debian上的MariaDB:语法错误:如何将unix套接字身份验证切换回基于密码的身份验证?,mysql,unix,mariadb,alter,unix-socket,Mysql,Unix,Mariadb,Alter,Unix Socket,我刚刚在我的新unix系统(Mariadb服务器版本10.1.37 Debian 9.6)上安装了Mariadb。我有以下用户: +------------+-----------------------+-------------+-----------+ | user | authentication_string | plugin | host | +------------+-----------------------+-------------+---
+------------+-----------------------+-------------+-----------+
| user | authentication_string | plugin | host |
+------------+-----------------------+-------------+-----------+
| root | | unix_socket | localhost |
| phpmyadmin | | | localhost |
+------------+-----------------------+-------------+-----------+
我希望能够使用密码以“root”身份登录(而不是使用unix_套接字插件)。我尝试使用ALTER USER命令更改为基于密码的身份验证。我使用“sudomysql”从根帐户输入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');
在所有情况下,我都会遇到以下错误:
错误1064(42000):您的SQL语法有错误;检查与您的MariaDB服务器版本对应的手册,以了解第1行“…”附近使用的正确语法
将根登录从套接字更改为基于密码的正确语法/方法是什么?如果您有任何帮助,我们将不胜感激。您似乎刚刚安装了MariaDB或MySQL 安装后,您只需从根目录运行以下命令:
mysql_secure_install
或:
在我阅读手册时,MariaDB已使auth套接字功能 因此,试着: 和/或本机密码验证:
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password;
如果它也不起作用,那么请尝试清空用户表的plugin字段并刷新权限:
USE mysql;
UPDATE user SET plugin='' WHERE user ='root';
FLUSH PRIVILEGES;
在经历了狩猎、探索、发现和搜索之后,这3个命令帮助我解决了这个问题中提到的MariaDB案例:
mysqld_safe --skip-grant-tables --skip-networking &
UPDATE user SET plugin='' WHERE user ='root';
UPDATE mysql.user SET
authentication_string = PASSWORD('UNCOMPROMISABLE_STRONGHOLD_PASSWORD')
WHERE User = 'root' AND Host = 'localhost';
是的,新安装,我昨天运行了mysql\u secure\u安装。当被问到“为root用户输入当前密码”时,我只按了enter键。在root上输入(sudo)mysql\u secure\u install现在导致“command not found”->我在root上再次运行:sudo apt install mysql server,它没有将任何内容更改为installation,但mysql\u secure\u install-命令再次可用。在那里输入了强根密码,但仍然能够调用mysql wo/password,unix_套接字仍然显示为根用户的插件。@MarcSteffen您只是尝试更新表吗<代码>使用mysql;更新用户集插件='',其中用户='根';同花顺特权还要检查此文件是否存在:
/root/.my.cnf
如果安全安装创建了该文件@num8er该怎么办谢谢,你解决了:使用mysql;更新用户集插件='',其中用户='root';同花顺特权代码>工作得很好。我的用户显示时没有套接字插件,并且之前使用mysql_secure_install-command输入的强root密码处于活动状态。ALTER user
是在10.2中引入的。
USE mysql;
UPDATE user SET plugin='' WHERE user ='root';
FLUSH PRIVILEGES;
mysqld_safe --skip-grant-tables --skip-networking &
UPDATE user SET plugin='' WHERE user ='root';
UPDATE mysql.user SET
authentication_string = PASSWORD('UNCOMPROMISABLE_STRONGHOLD_PASSWORD')
WHERE User = 'root' AND Host = 'localhost';