MariaDB - 无法以root用户身份登录

时间:2017-04-12 21:24:31

标签: mysql mariadb

我正在尝试在Ubuntu(16.04.02)上设置MariaDB(10.0.29)。安装完成并启动进程(sudo service mysql start)后,即使我最初将密码设置为空白,也无法以root身份登录。

mysql -u root将拒绝我访问。我通过sudo mysql登录并检查了用户表,即。 select user, password, authentication_string from mysql.user和预期的一样:

+---------+----------+-----------------------+ 
| User    | password | authentication_string |
+---------+----------+-----------------------+
| root    |          |                       |
+---------+----------+-----------------------+

我还创建了一个新用户,即。 create user 'test'@'localhost' identified by '';当我尝试mysql -u test(空密码)时,它会按预期工作并让我登录。

用户表如下所示:

+---------+----------+-----------------------+
| User    | password | authentication_string |
+---------+----------+-----------------------+
| root    |          |                       |
| test    |          |                       |
+---------+----------+-----------------------+

那么,任何人都可以告诉我为什么我无法使用空密码登录root,但我可以test登录?

3 个答案:

答案 0 :(得分:16)

与本机MariaDB软件包(由MariaDB本身提供的软件包)不同,默认情况下由Ubuntu生成的软件包对本地根进行unix_socket认证。要检查,请运行

SELECT user, host, plugin FROM mysql.user;

如果您在unix_socket列中看到plugin,那就是原因。

要返回常规密码验证,请运行

UPDATE mysql.user SET plugin = '' WHERE plugin = 'unix_socket';
FLUSH PRIVILEGES;

(选择适合您目的的WHERE子句,上面只是一个例子)

答案 1 :(得分:1)

我挣扎了一段时间。默认情况下,我的Ubuntu附带MariaDB(10.0.31)。重新安装几次并将插件更改为各种建议后 - 我仍然无法正确登录到mysql。

最后我从repo安装了最新的MariaDB(10.2.12): https://downloads.mariadb.org/mariadb/repositories/

我能够立即正确登录。

答案 2 :(得分:1)

您遇到的问题归因于MariaDB 10.4的身份验证系统的更改:

  

作为上述更改的结果,对所有人开放的强大根帐户最终消失了。 (...),因为根帐户是自动安全创建的。它们的创建方式为:通过unix_socket或mysql_native_password使用“无效”来创建用户root @ localhost标识

如果您确实要以root的身份访问数据库,则应通过cli mariadb -p登录并运行:

ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("your-password-here");

来源:https://mariadb.com/kb/en/library/authentication-from-mariadb-104/#altering-the-user-account-to-revert-to-the-previous-authentication-method

关于下面的另一个解决方案:它们不起作用,因为MariaDB也不允许您更新plugin列:ERROR 1348 (HY000): Column 'plugin' is not updatable