MariaDb 的管理员密码似乎不起作用

MariaDb 的管理员密码似乎不起作用

我刚刚MariaDb在全新的 Ubuntu Gnome 上安装了它并运行mysql_secure_安装之后我设置了一个合适的管理员密码,删除了匿名用户等等。

后来我意识到管理员密码存在一些奇怪的行为:

  • 如果我尝试使用该命令从我的普通用户帐户登录,mysql -u root -p我总是收到错误:ERROR 1698 (28000): Access denied for user 'root'@'localhost'
    我很确定我输入了正确的密码,该密码是我设置的mysql_secure_安装早些时候…
  • 当我使用从 root 运行命令时sudo mysql -u root -p,我总是可以访问数据库,无论我实际输入哪个密码......

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

答案1

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

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

$ sudo mysql -u root

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

然后您将获得预期的行为:任何拥有 MariaDB 根密码的用户都应该能够以根身份登录。

另一种方法是设置另一个用户(不是 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;

答案2

HBruijn 的答案指定使用

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

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

为了使它工作,我需要使用这个:

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

相关内容