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

Debian11下MariaDB root本地无密码登录失败问题求助

问题分析

你的核心问题是root@localhost仅配置了mysql_native_password密码认证,而Debian 11默认的MariaDB会给本地root用户启用「密码认证+unix_socket套接字认证」的双模式,允许系统root用户通过本地套接字无密码登录。

从你提供的权限信息来看:

  • 旧版的IDENTIFIED BY PASSWORD语法是MySQL 5.7及更早的写法,MariaDB 10.5+(Debian11默认版本)推荐使用IDENTIFIED VIA的新语法
  • 没有配置unix_socket认证,导致本地执行mysql -u root或服务重载时,因尝试无密码登录被拒绝
解决方案

操作前请确保你能通过mysql -u root -p正常登录,且不要关闭当前登录会话(防止操作失误锁死自己)。

  1. 登录MariaDB
mysql -u root -p
  1. 更新root@localhost的认证规则
    将下面语句中的密码哈希替换为你自己的(即mysql.user表中root@localhost对应的authentication_string值:*A1500BDAC90A8E0183B2803086BD6D6E0999EC60):
GRANT ALL PRIVILEGES ON *.* TO `root`@`localhost` 
IDENTIFIED VIA mysql_native_password USING '*A1500BDAC90A8E0183B2803086BD6D6E0999EC60' OR unix_socket 
WITH GRANT OPTION;
  1. 清理重复的PROXY权限
    你当前有两条重复的PROXY授权,执行下面语句删除(执行一次即可,重复执行会报错,属正常情况):
DROP PROXY ON ''@'%' FOR 'root'@'localhost';
  1. 刷新权限使配置生效
FLUSH PRIVILEGES;
验证操作
  1. 退出当前MariaDB会话,用系统root用户执行mysql(无需加任何参数),应直接登录成功
  2. 执行/etc/init.d/mariadb reload,不再出现Access denied错误
  3. 网站的数据库访问不受影响,因为网站依然使用密码认证方式连接
注意事项
  • 该配置是Debian 11 MariaDB的标准默认配置,unix_socket认证仅允许系统root用户或mysql组用户通过本地套接字无密码登录,安全性有保障
  • 如果操作后出现登录问题,可以启动MariaDB安全模式重置:
    systemctl stop mariadb
    mysqld_safe --skip-grant-tables &
    
    然后重新登录修改配置即可

内容的提问来源于stack exchange,提问作者afriend

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:20:22