在 MariaDB 10.5 上没有 sudo 无法登录

问题描述

当我安装 mariadb(目前在我的 manjaro linux 上为 10.5 版)时,出于某种未知原因。它不会让我没有 sudo 登录。所以我进行了调查(并且我使用了那个身份验证插件 unix_socket 和 MysqL_native_password 等东西;不幸的是无济于事,因为用户表不再是一个表而是一个视图);后来我发现using MariaDB authentication mariadb documentation; MysqL.grobal_priv 表中 root 和 MysqL 的密码无效。

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');

并且还修改MysqL密码

SET PASSWORD FOR 'MysqL'@'localhost' = PASSWORD('pass');

现在我可以不用密码登录了,但我的问题是

  1. 为什么会这样。我确实在 MysqL_secure_installation 命令上设置了密码。
  2. 我只需要以这种方式设置(将 authentication_string 和 Password 设置为相同)即可。

仅供参考:我确实在密码中使用了特殊符号 !@。也许 bash 控制台在这个无效的密码初始化中起到了一定的作用。只是猜测

解决方法

回答问题 1:新 MariaDB 安装的默认访问权限是 root IDENTIFIED VIA unix_socket(因此需要 sudo)。因此,即使您在安装过程中设置了密码,它也不会被使用(即无效)。这样做是为了确保安全(无远程访问),并且其他以 root 身份运行的进程无需密码即可访问服务器(升级检查等)。

回答问题 2: 是的,就是这么简单,见下文。但请注意,您可能需要更新系统维护任务的密码 - 检查您的日志 (systemctl status mariadb.service)。

无论如何要更改为“root”:

GRANT ALL PRIVILEGES on *.* to 'root'@'localhost' IDENTIFIED BY '<password>';
FLUSH PRIVILEGES;

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
FLUSH PRIVILEGES;

然后重启mariadb:

systemctl restart mariadb

瞧,您将可以通过“mysql -u root -p”从您的个人帐户访问

要改回来:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket WITH GRANT OPTION;
FLUSH PRIVILEGES;

我通常发现最好保留“root”用户(套接字),并使用 GRANT ALL 创建一个新的“root”用户(“super”、“administrator”、“superadmin”等) PRIVILEGES ON .,在需要时使用密码进行身份验证..

GRANT ALL PRIVILEGES ON *.* TO 'super'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION
GRANT PROXY ON ''@'%' TO 'super'@'localhost' WITH GRANT OPTION
FLUSH PRIVILEGES;

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...