Mysql MariaDB-无法以root用户身份登录
我正试图在Ubuntu(16.04.02)上安装MariaDB(10.0.29)。在我安装并启动进程(Mysql MariaDB-无法以root用户身份登录,mysql,mariadb,Mysql,Mariadb,我正试图在Ubuntu(16.04.02)上安装MariaDB(10.0.29)。在我安装并启动进程(sudo-service-mysql-start)后,我无法以root身份登录,即使我最初将密码设置为空 Iemysql-u root将拒绝我访问。我通过sudo-mysql登录并检查了用户表,即从mysql中选择用户、密码、身份验证字符串。用户和预期的: +---------+----------+-----------------------+ | User | password |
sudo-service-mysql-start
)后,我无法以root
身份登录,即使我最初将密码设置为空
Iemysql-u root将拒绝我访问。我通过sudo-mysql
登录并检查了用户表,即从mysql中选择用户、密码、身份验证字符串。用户
和预期的:
+---------+----------+-----------------------+
| User | password | authentication_string |
+---------+----------+-----------------------+
| root | | |
+---------+----------+-----------------------+
我还创建了一个新用户,即创建由“”标识的用户“测试”@“本地主机”当我尝试执行mysql-u测试时(空密码),它会按预期工作并让我登录
用户表如下所示:
+---------+----------+-----------------------+
| User | password | authentication_string |
+---------+----------+-----------------------+
| root | | |
| test | | |
+---------+----------+-----------------------+
那么,有人能告诉我为什么我不能用空密码以root
身份登录,但我可以以test
身份登录吗?与本机MariaDB软件包(MariaDB本身提供的软件包)不同,Ubuntu生成的软件包默认具有本地root的身份验证。检查、运行
SELECT user, host, plugin FROM mysql.user;
如果在plugin
列中看到unix\u socket
,这就是原因
要返回到通常的密码身份验证,请运行
UPDATE mysql.user SET plugin = '' WHERE plugin = 'unix_socket';
FLUSH PRIVILEGES;
(选择适合您的目的的WHERE
子句,上面的一个只是一个例子)我为此挣扎了一段时间。默认情况下,我的Ubuntu附带MariaDB(10.0.31)。在重新安装了几次并根据各种建议更改插件之后,我仍然无法正确登录mysql
最后,我安装了回购协议中最新的MariaDB(10.2.12):
我可以立即正确登录。您遇到的问题是由于MariaDB 10.4的身份验证系统发生了更改:
由于上述更改,为所有人开放的全能根帐户终于消失了。(…)因为根帐户是自动安全创建的。它们被创建为:CREATE USERroot@localhost使用“无效”通过unix_套接字或mysql_本机密码识别
如果您确实想以根用户身份访问数据库,则应通过climariadb-p
登录并运行:
ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("your-password-here");
资料来源:
关于下面的另一个解决方案:它们不起作用,因为MariaDB不允许您更新插件
列:错误1348(HY000):列“插件”不可更新
~
更新2020:尽管我的上述解决方案有效,但它将默认的rootunix\u套接字
身份验证替换为密码。我注意到这会中断一些任务,例如mariadb升级/您自己的维护脚本,这些脚本在以root用户身份运行时无需额外密码即可连接到DB
我的建议是添加一个新的根登录名,如下所示:
CREATE USER `root`@`%` IDENTIFIED WITH mysql_native_password using PASSWORD('your-password-here');
GRANT ALL PRIVILEGES ON *.* TO `root`@`%` WITH GRANT OPTION;
FLUSH PRIVILEGES;
这将有效地仍然允许root登录的默认行为,并使用密码添加对数据库的外部访问空密码,没有密码可能会被区别对待。我有类似的经验。首先,在安装时,我并没有要求设置root密码。我试图重置根密码,但仍然无法访问。重新安装后,情况也一样。还有Ubuntu 16.04 64位。安装mysql Afterwards您可以按照本文所述重置您的根密码您可以使用mysql-uroot-p
登录,当终端询问密码时,只需按enter键。这很有帮助。我知道ubuntu没有使用“root”和密码,而是在以root身份登录时强制mariadb使用自己的身份验证。这也使mariadb Mac OS root登录看起来mariadb 10.4更改了行为以匹配Debian/ubuntu: