Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Debian上的MariaDB:语法错误:如何将unix套接字身份验证切换回基于密码的身份验证?_Mysql_Unix_Mariadb_Alter_Unix Socket - Fatal编程技术网

Mysql Debian上的MariaDB:语法错误:如何将unix套接字身份验证切换回基于密码的身份验证?

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 | +------------+-----------------------+-------------+---

我刚刚在我的新unix系统(Mariadb服务器版本10.1.37 Debian 9.6)上安装了Mariadb。我有以下用户:

+------------+-----------------------+-------------+-----------+
| 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';