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


我刚安装好了 MariaDb 在一个新鲜的Ubuntu Gnome上跑了 mysql_secure_installation 之后,我设置了一个体面的管理员密码,删除了匿名用户等。

之后我发现了一些关于管理员密码的奇怪行为:

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

这是正常的行为,我做错了什么或者我以某种方式搞砸了安装?


7
2017-08-06 23:23






答案:


这种行为听起来与启用 插入 对于 套接字认证 对于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用户身份登录。

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

12
2017-08-07 05:11