MariaDb的管理员密码似乎无效


8

我刚安装MariaDb在新的Ubuntu Gnome上,然后运行mysql_secure_installation,在那里我设置了不错的管理员密码,删除了匿名用户,等等。

之后,我意识到有关管理员密码的一些奇怪行为:

  • 如果我尝试使用命令从普通用户帐户登录,我mysql -u root -p总是会收到错误消息:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    我敢肯定我输入了我之前使用mysql_secure_installation设置的正确密码...
  • 当我使用root从root运行命令时sudo mysql -u root -p,无论我实际输入哪个密码,我都始终可以访问数据库...

这是正常现象吗,我做错了什么吗?还是以某种方式搞砸了安装?

Answers:


16

这种行为听起来与为根用户启用插件进行套接字身份验证一致,MariaDB在此信任通过套接字接收的操作系统凭据,而不依赖密码。通过sudo以root用户身份使用或登录,您可以以root用户身份连接到数据库服务器,因为您是OS的root用户,而其他OS用户则不能。

您可以使用以下方法删除该选项:

$ sudo mysql -u root

mysql> use mysql;
mysql> update user set plugin='' where User='root';
mysql> flush privileges;

然后您得到预期的行为,具有MariaDB root密码的任何用户都应该能够以root用户身份登录。

替代方法是设置另一个具有完全管理员特权的用户(不是root用户),并出于管理目的使用该用户(而不是root用户):

$ sudo mysql -u root
mysql> CREATE USER 'finley'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'finley'@'localhost'
->     WITH GRANT OPTION;

0

HBruijn给出的答案指定使用

update user set plugin='' where User='root';

但是,这对我来说破坏了登录系统,因为没有人能够登录(无论是否使用正确的密码以及是否使用sudo)

为了让它正常工作,我需要改用以下代码:

update user set plugin="mysql_native_password" where User='root';
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.