Debian 9下全新安装MariaDB后无法登录,求解决方法
解决Debian 9上全新安装MySQL/MariaDB的登录拒绝问题
我太懂这种刚装完数据库就卡登录的烦躁了——平时用Postgres顺风顺水,突然碰MySQL/MariaDB的坑确实闹心。针对你遇到的Debian 9上全新安装后,root用户无论空密码还是各种登录方式都提示Access denied的问题,我给你整理几个亲测有效的修复步骤:
核心原因:Debian默认的unix_socket认证机制
Debian系(包括Debian 9)安装MySQL/MariaDB后,默认给root用户启用的是unix_socket认证,而不是传统的密码认证。这意味着只有系统的root用户(通过sudo切换的那种)才能直接通过本地socket登录,普通用户哪怕输入正确密码也会被拒绝,这也是你试了各种命令都没用的关键原因。
修复步骤
1. 跳过权限验证临时登录
首先我们需要绕开权限验证,直接进入数据库修改配置:
- 先停止数据库服务:
sudo systemctl stop mysql # 如果是MariaDB,替换为mariadb - 用跳过权限表的方式启动服务:
sudo mysqld_safe --skip-grant-tables & - 现在可以无密码直接登录:
mysql -u root
2. 修改root用户的认证方式与密码
进入数据库后,我们要把root的认证方式改成密码认证,同时设置密码(也可以设为空,但建议设个安全密码):
- 切换到系统权限库:
USE mysql; - 修改localhost的root用户认证方式和密码(把
你的密码换成你想设置的密码,空密码就留空引号):ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 如果需要通过
root@127.0.0.1(TCP连接)登录,也同步修改这个用户的配置:ALTER USER 'root'@'127.0.0.1' IDENTIFIED WITH mysql_native_password BY '你的密码'; - 刷新权限使配置生效:
FLUSH PRIVILEGES;
3. 恢复正常服务并验证登录
- 退出数据库:
EXIT; - 关掉刚才的临时进程,重启正常服务:
sudo pkill mysqld_safe sudo systemctl start mysql # 或mariadb - 现在用密码登录测试:
输入你设置的密码(空密码直接回车),应该就能顺利进入数据库了。mysql -u root -p
额外排查:检查临时密码(如果上述方法无效)
少数情况下,Debian 9安装时会生成临时密码存放在日志里,你可以检查一下:
sudo cat /var/log/mysql/error.log | grep 'temporary password'
如果找到临时密码,先用这个密码登录,再重复步骤2修改成你自己的密码即可。
内容的提问来源于stack exchange,提问作者MortenSickel
相关产品推荐
相关产品推荐

