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

在MariaDB 10.5中禁用root无密码登录

解决新版本MariaDB禁用root无密码登录的问题

我之前也碰到过一模一样的问题——新版本MariaDB对mysql.user视图的结构和权限做了严格限制,原来直接把认证插件设为空的方法已经行不通了,因为mysql.user现在是视图而非物理表,直接操作会触发引用权限错误。下面给你两个官方推荐的可行方案:

方案一:设置密码+mysql_native_password认证(最通用的安全方式)

这是最直接禁用无密码登录的方法,给root设置强密码并使用标准密码认证:

  1. 先无密码登录到MariaDB(如果你现在还能登录的话):
    mysql -u root
    
  2. 执行ALTER USER语句设置密码和认证插件:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的高强度密码';
    

    注意:如果你的root账号允许远程访问(比如'root'@'%'),要替换对应的主机部分,确保所有root账号都配置了密码。

  3. 刷新权限使配置生效:
    FLUSH PRIVILEGES;
    

之后root就必须输入密码才能登录,彻底禁用无密码访问。

方案二:使用unix_socket认证(本地安全登录,无需密码但限制登录方式)

如果你的场景是服务器本地管理,不想输入密码但又要避免无密码漏洞,可以用unix_socket插件——只有系统root用户(或sudo权限用户)才能通过sudo mysql登录MariaDB的root账号,远程无法无密码访问:

  1. 登录MariaDB后执行:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH unix_socket;
    
  2. 刷新权限:
    FLUSH PRIVILEGES;
    

这种方式既满足本地管理的便捷性,又杜绝了远程无密码登录的风险。

为什么原来的方法失效了?

新版本MariaDB不再允许将认证插件设为空字符串,一是因为mysql.user从物理表改成了视图,直接修改视图字段会触发引用错误;二是官方出于安全考虑,限制了这种不安全的配置,强制使用官方支持的认证插件(比如mysql_native_password、unix_socket、caching_sha2_password等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 22:22:42