Ubuntu 上安装 MariaDB 后无法直接使用空密码登录的问题

时间:2024-03-21 16:05:48

 

问题

 Mariadb安装好之后,默认 root 用户的本地登录密码为空,可以直接使用 root 用户在本地进行登录或者初始化,之前都是在 CentOS 下装的没啥问题,这次在Ubuntu(18.04.2)系统下安装了mariadb(10.1.44)进行测试,安装完成后发现使用 root 用户无法通过空密码直接登录,登录和初始化时使用空密码直接报如下的错误:

Ubuntu 上安装 MariaDB 后无法直接使用空密码登录的问题

Ubuntu 上安装 MariaDB 后无法直接使用空密码登录的问题

看起来像时权限不足或者密码不对,emm,但是说好的空密码呢,查了一堆帖子解决办法都是重置密码(有些说初始密码是随机字符串,但也没说怎么找到,直接重置了。。。(MySQL以前的版本貌似是这样的,但在日志里可以找到初始密码,但Mariadb 好像一直是空密码,至少我开始用之后都是这样)),也没说是怎么原因导致的,这让我很是郁闷,官方(上图为证)都写的明明白白说 root 用户的初始密码为空了,怎么会登不上,而且空密码有啥好重置的。

原因

仔细思考了下,想到应该还是系统用户权限的问题。我的理解如下:

Mariadb中默认给 root 用户的权限如下:

Ubuntu 上安装 MariaDB 后无法直接使用空密码登录的问题

即只允许本地(localhost)登录的 root 用户从使用空密码登录数据库。

CentOS 跟 Ubuntu 还是有很大不同的,CentOS中我们可以直接使用 root 登录系统,而 Ubuntu 默认不能直接使用 root 用户登录系统。CentOS 里如果系统本地登录的用户为root,这样执行命令 mysql -uroot  登录数据库时确实是以 'root @localhost' 身份登录的,而在 Ubuntu 中不能直接使用 root 用户登录系统,通常系统本地登录的是一个普通用户(如我这里cui),而在执行登录命令时虽然 mysql -uroot 指定了登录用户为 root,但这个 root 却没有在本地登录,可以理解为这时登录的身份为 '[email protected]' ,因此就不符合其默认的权限,无法登录。

解决办法

要解决这个问题,只需要在登录命令前加个 sudo 进行授权,相当于执行登录命令时是以在本地登录的 root 用户身份执行的,从而登录时就是使用 '[email protected]' 身份登录的,合法合规,嗯,这样登录时就可以以空密码登录和初始化数据库了,而不需要重置密码这种多余的操作,如下图所示:

Ubuntu 上安装 MariaDB 后无法直接使用空密码登录的问题

Ubuntu 上安装 MariaDB 后无法直接使用空密码登录的问题

我现在对Linux系统的用户权限和MySQL的用户权限理解也不是很深,这里只是一个浅陋的理解,但是我觉得探究问题原因的大方向是正确的,等以后有了更深的理解后再进行补充,也希望其它资深大佬多多指教。