Ubuntu 24.04 安装 MariaDB 后 root 密码未知?解决方案在此
在 Ubuntu 24.04 上新安装 MariaDB 后,许多用户会发现自己不知道 root 用户的密码,甚至在安装过程中也没有提示设置密码。这是因为在较新的 MariaDB 版本中,默认情况下 root
用户采用了 unix_socket
身份验证插件。这意味着您可以使用操作系统的 root
用户权限直接登录 MariaDB,而无需输入密码。
本文将为您详细解释如何解决这个问题,并为您提供设置新密码的多种方法。
方法一:使用 mysql_secure_installation
脚本 (推荐)
这是最推荐、最安全且最简单的方法。mysql_secure_installation
是一个随 MariaDB 一同安装的脚本,旨在帮助用户进行基本的安全设置,包括设置 root 密码。
步骤如下:
以 root 用户权限运行脚本:
打开终端,输入以下命令:
sudo mysql_secure_installation
切换到密码验证:
脚本会首先询问您是否想切换到 unix_socket 身份验证之外的方式。为了能使用密码登录,请输入 Y 并按回车。
设置新密码:
接下来,系统会提示您为 MariaDB 的 root 用户设置新密码。输入您想要设置的强密码并再次输入以确认。
完成安全设置:
脚本还会询问您是否要移除匿名用户、禁止 root 用户远程登录、移除测试数据库等。出于安全考虑,建议对这些选项都选择 Y (是)。
完成以上步骤后,您的 MariaDB root
用户就已经设置了新密码。您现在可以使用以下命令通过密码登录:
sudo mysql -u root -p
然后输入您刚刚设置的密码即可。
方法二:手动更改 root 用户密码
如果您不想运行 mysql_secure_installation
脚本,也可以手动更改 root
用户的密码。
步骤如下:
以 root 权限登录 MariaDB:
由于默认使用 unix_socket 认证,您可以直接使用 sudo 命令免密登录。
sudo mysql -u root
更改 root 用户的认证方式和密码:
进入 MariaDB 命令行后,执行以下 SQL 语句来更改 root 用户的认证插件为 mysql_native_password 并设置新密码。请将 YourStrongPasswordHere 替换为您自己的强密码。
ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('YourStrongPasswordHere');
刷新权限:
为了使更改立即生效,需要刷新权限。
FLUSH PRIVILEGES;
退出并测试:
输入 EXIT; 退出 MariaDB 命令行。现在,您应该可以使用新设置的密码登录了。
sudo mysql -u root -p
方法三:当无法登录时重置 root 密码
在极少数情况下,如果您已经更改了密码但忘记了,或者上述方法因某种原因无法奏效,您可以通过以下步骤重置 root
密码。
步骤如下:
停止 MariaDB 服务:
sudo systemctl stop mariadb
以安全模式启动 MariaDB (跳过授权表):
sudo mysqld_safe --skip-grant-tables &
此命令会在后台以不检查权限的方式启动 MariaDB。
免密登录 MariaDB:
sudo mysql -u root
重置密码:
进入 MariaDB 命令行后,执行以下命令来设置新密码。同样,请将 YourNewStrongPasswordHere 替换为您自己的强密码。
FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewStrongPasswordHere';
正常重启 MariaDB:
首先,停止以安全模式运行的 MariaDB 进程。您可能需要使用 kill 命令。
sudo killall mysqld_safe sudo killall mysqld
然后,正常启动 MariaDB 服务。
sudo systemctl start mariadb
现在,您应该可以使用新重置的密码登录 MariaDB 了。
总结
对于 Ubuntu 24.04 上新安装的 MariaDB,root
用户默认使用 unix_socket
认证,允许通过 sudo
免密登录。通过 mysql_secure_installation
脚本设置密码是最推荐的方法。如果需要,也可以手动更改或在忘记密码时进行重置。我们强烈建议您为 root
用户设置一个强密码以保障数据库的安全。