返回

Ansible 中更改 Root 密码的疑难杂症:常见问题和解决方案

mysql

Ansible 中更改 Root 密码的疑难杂症

简介

在配置 Ansible 时,你可能无法更改 root 账户的密码。本文将探讨导致此问题的原因并提供分步解决方案。

问题的原因

  • 凭据不正确: 检查 login_userlogin_password 是否与 root 账户匹配。
  • 数据库连接问题: 确认数据库已运行并可通过 Ansible 连接。
  • Ansible 配置错误: 验证 mysql_user 模块配置,确保参数正确。

解决步骤

1. 检查凭据

确保你提供的凭据与 root 账户匹配。

2. 检查数据库连接

运行 mysql -h <host> -u root -p 来测试连接。

3. 检查 Ansible 配置

确认以下配置:

  • mysql_user 模块的 name 为 "root"
  • host 参数为目标主机名
  • password 参数为新密码
  • check_implicit_adminyes
  • priv 为 ".:ALL,GRANT"

4. 禁用 SELinux

运行 setenforce 0 以禁用 SELinux。

5. 忽略错误

如果其他方法失败,尝试忽略错误:

- name: update mysql root password for all root accounts
  become: yes
  mysql_user:
    login_user=root
    login_password=''
    name=root
    host="{{ item }}"
    password="{{ mysql_root_password }}"
    check_implicit_admin=yes
    priv="*.*:ALL,GRANT"
  with_items:
    - "{{ ansible_hostname }}"
    - 127.0.0.1
    - ::1
    - localhost
  ignore_errors: true

结论

通过遵循这些步骤,你可以解决更改 Ansible 中 root 密码的问题。

常见问题解答

1. 我得到 "Could not update mysql.user record" 错误

  • 确认新密码符合密码策略。
  • 检查数据库是否允许远程连接。

2. 我收到 "Unknown database 'mysql'" 错误

  • 确保连接到正确的数据库。
  • 尝试重新加载 MySQL 权限表:sudo /etc/init.d/mysql reload

3. 我是否需要 root 访问权限才能更改密码?

  • 是的,需要 root 访问权限才能更改 MySQL root 账户的密码。

4. 如何重置 root 密码?

  • 重新启动 MySQL 并进入安全模式。运行 ALTER USER 'root'@'localhost' IDENTIFIED BY '<new-password>';

5. 我怎样才能避免这个问题?

  • 存储凭据并使用 Ansible Vault。
  • 使用 Ansible 2.8 或更高版本。
  • 确保数据库已更新并正确配置。