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

在AWS通过PackStack安装OpenStack时遇MariaDB本地权限错误

解决MariaDB mysql_secure_installation 报Access denied for user 'root'@'localhost'的问题

我来帮你搞定这个问题,这种root登录拒绝的情况在刚装完MariaDB后很常见,跟你修改/etc/hosts关系不大,核心是root用户的认证方式或者权限配置出了问题。下面是一步步的解决方法:

步骤1:跳过密码验证启动MariaDB

首先我们需要让MariaDB暂时跳过密码验证,这样才能登录进去修改配置:

  • 编辑MariaDB的配置文件,常见路径是/etc/my.cnf或者/etc/mysql/my.cnf(不同发行版可能略有差异)
  • 在[mysqld]段落中添加一行:
    skip-grant-tables
    
  • 保存文件后重启MariaDB服务:
    systemctl restart mariadb
    

步骤2:无密码登录MariaDB

现在可以直接无密码登录到MariaDB控制台:

mysql -u root

步骤3:修改root用户的认证方式和密码

登录成功后,切换到系统数据库mysql:

USE mysql;

接下来根据你的MariaDB版本执行对应的命令:

  • MariaDB 10.4及以上版本:默认root用unix_socket认证,我们改成密码认证并设置新密码:
    ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的安全密码';
    
  • MariaDB 10.3及以下版本:用UPDATE语句更新密码:
    UPDATE user SET password=PASSWORD('你的安全密码') WHERE user='root' AND host='localhost';
    

执行完密码修改后,一定要刷新权限让配置生效:

FLUSH PRIVILEGES;

然后输入exit;退出MariaDB控制台。

步骤4:恢复正常启动并验证

  • 回到之前编辑的MariaDB配置文件,删掉刚才添加的skip-grant-tables这一行
  • 再次重启MariaDB服务:
    systemctl restart mariadb
    

现在再执行mysql_secure_installation,输入你刚才设置的新密码,就能顺利进行安全配置了。

补充说明

你修改/etc/hosts没用的原因是:这个错误里的'root'@'localhost'不是指localhost解析失败,而是MariaDB的用户权限表中,root用户针对localhost的登录规则不允许密码登录(比如默认用socket认证,只允许本地通过socket连接,而mysql_secure_installation尝试用TCP/IP或者密码方式登录),所以调整root的认证方式才是核心解决办法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:02:34