You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:46:34