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

我刚安装了一个新的Ubuntu GNOME上的MariaDb ,然后运行mysql_secure_installation ,在那里我设置了一个体面的pipe理员密码,删除了匿名用户等。

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

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

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

这种行为听起来与为root用户启用套接字身份validation的插件一致,其中MariaDB信任通过套接字接收的操作系统证书,并且不依赖于密码。 通过使用sudo或以root用户身份login,您可以以root身份连接到数据库服务器,因为您在操作系统上是根用户,但是其他操作系统用户则不能。

您可以删除该选项:

 $ sudo mysql -u root mysql> use mysql; mysql> update user set plugin='' where User='root'; mysql> flush privileges; 

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

另一种方法是设置另一个用户,而不是root用户,该用户也具有完全的pipe理员权限,并且为了pipe理目的而使用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;