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

Ansible部署WordPress+MariaDB遇权限及配置错误求助

使用Ansible部署WordPress+MariaDB时的权限与数据库配置问题

我正尝试用Ansible搭建WordPress+MariaDB运行环境,但在Oracle Linux 9.4和Fedora 40系统上,执行创建数据库及带权限新用户的操作时遇到相似错误。

清单配置

[fedora]
192.168.1.200 ansible_ssh_user=leo hostname=fedorasrv01 

[oracle]
192.168.1.202 ansible_ssh_user=leo hostname=oraclesrv01

Ansible剧本内容

- name: Install Mariadb Server - RedHat
  yum:
    name:
      - mariadb-server
      - python3-pip
    state: present
  when: (ansible_facts['os_family'] == "RedHat")

- name: Install PyMySQL on RedHat
  ansible.builtin.pip:
    name: PyMySQL
    state: present
  when: (ansible_facts['os_family'] == "RedHat")

- name: "Start MariaDB"
  service:
    name: mariadb
    state: started
    enabled: yes

- name: Creating a database to be used by WordPress - RedHat
  mysql_db:
    name: "{{ db_wp_name }}"
    state: present
  when: (ansible_facts['os_family'] == "RedHat")

- name: Create user with password, all database privileges - RedHat
  mysql_user:
    name: "{{ db_wp_username }}"
    password: "{{ db_wp_password }}"
    priv: "{{ db_wp_name }}.*:ALL,GRANT"
    state: present
  when: (ansible_facts['os_family'] == "RedHat")

初始错误信息

TASK [mysql : Creating a database to be used by WordPress - RedHat] ***************************************************************************************************************************************************************************
fatal: [192.168.1.202]: FAILED! => {"changed": false, "msg": "unable to find /root/.my.cnf. Exception message: (1698, \"Access denied for user 'root'@'localhost'\")"}
fatal: [192.168.1.200]: FAILED! => {"changed": false, "msg": "unable to find /root/.my.cnf. Exception message: (1045, \"Access denied for user 'root'@'localhost' (using password: NO)\")"}

为解决问题,我在出错步骤前添加了一个辅助任务剧本并执行:

- name: Stop MySQL
  service: name=mysqld state=stopped
- name: set environment variables
  shell: systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"
- name: Start MySQL
  service: name=mysqld state=started
- name: sql query
  command:  mysql -u root --execute="UPDATE mysql.user SET authentication_string = PASSWORD('{{ mysql_root_password }}') WHERE User = 'root' AND Host = 'localhost';"
- name: sql query flush
  command:  mysql -u root --execute="FLUSH PRIVILEGES"
- name: Stop MySQL
  service: name=mysqld state=stopped
- name: unset environment variables
  shell: systemctl unset-environment MYSQLD_OPTS
- name: Start MySQL
  service: name=mysqld state=started

但执行后出现新错误:

TASK [mysql : sql query] **********************************************************************************************************************************************************************************************************************
fatal: [192.168.1.200]: FAILED! => {"changed": true, "cmd": ["mysql", "-u", "root", "--execute=UPDATE mysql.user SET authentication_string = PASSWORD('Password123') WHERE User = 'root' AND Host = 'localhost';"], "delta": "0:00:00.087770", "end": "2024-07-02 07:06:47.621171", "msg": "non-zero return code", "rc": 1, "start": "2024-07-02 07:06:47.533401", "stderr": "ERROR 1348 (HY000) at line 1: Column 'authentication_string' is not updatable", "stderr_lines": ["ERROR 1348 (HY000) at line 1: Column 'authentication_string' is not updatable"], "stdout": "", "stdout_lines": []}
fatal: [192.168.1.202]: FAILED! => {"changed": true, "cmd": ["mysql", "-u", "root", "--execute=UPDATE mysql.user SET authentication_string = PASSWORD('Password123') WHERE User = 'root' AND Host = 'localhost';"], "delta": "0:00:00.088495", "end": "2024-07-02 07:06:47.591159", "msg": "non-zero return code", "rc": 1, "start": "2024-07-02 07:06:47.502664", "stderr": "ERROR 1348 (HY000) at line 1: Column 'authentication_string' is not updatable", "stderr_lines": ["ERROR 1348 (HY000) at line 1: Column 'authentication_string' is not updatable"], "stdout": "", "stdout_lines": []}

注释掉该辅助剧本后重试,数据库创建操作看似成功,但权限配置仍有问题:

TASK [mysql : Create user with password, all database privileges - RedHat] *********************************
fatal: [192.168.1.202]: FAILED! => {"changed": false, "msg": "(1290, 'The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement')"}
fatal: [192.168.1.200]: FAILED! => {"changed": false, "msg": "(1290, 'The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement')"}

我尝试过相关解决方案,但执行时出现错误:

mysql: unknown variable 'init-file=/var/lib/mysql/mysql-init'

另外,我尝试查找socket文件,但在RedHat系系统中未找到,不确定是否需要相关配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 14:32:21