我刚刚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';