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

使用Ansible修改MariaDB-Server初始root密码时遭遇访问拒绝

解决Ansible mysql_user模块修改MariaDB root密码失败的问题

问题原因

RHEL 9.2 上的 MariaDB 默认 root 用户采用 unix_socket 认证方式,而非密码认证。这就是为什么你能通过 sudo mysql -u root -h localhost 直接登录(sudo 关联系统root的unix socket),但用空密码通过TCP/IP方式(localhost对应TCP连接)登录会被拒绝。

解决方案

方案1:先切换认证方式再设置密码

先通过shell命令修改root的认证规则,再用mysql_user模块确认密码:

- name: 临时修改root认证方式并设置初始密码
  shell: sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345';"
  become: yes

- name: 确认root用户密码配置
  mysql_user:
    login_host: 'localhost'
    login_user: 'root'
    login_password: '12345'
    name: 'root'
    password: '12345'
    state: present
    host: 'localhost'
  become: yes

方案2:通过Unix Socket直接连接

利用MariaDB的unix_socket认证特性,跳过密码登录直接修改:

- name: 设置root用户密码(通过Unix Socket)
  mysql_user:
    login_unix_socket: '/var/lib/mysql/mysql.sock'  # RHEL9默认路径,若不符请自行调整
    name: 'root'
    password: '12345'
    state: present
    host: 'localhost'
  become: yes

补充说明

  • 方案1切换认证方式后,后续可通过密码正常TCP连接管理数据库;
  • 方案2贴合系统默认配置,无需密码,但需确认socket文件路径正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 15:03:22