我刚安装了一个新的Ubuntu GNOME上的MariaDb ,然后运行mysql_secure_installation ,在那里我设置了一个体面的pipe理员密码,删除了匿名用户等。
之后,我意识到一些关于pipe理员密码的奇怪行为:
mysql -u root -plogin,我总是得到一个错误: ERROR 1698 (28000): Access denied for user 'root'@'localhost' 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;