Ansible による MariaDB 10 のデータベース・ユーザー設定
Ansible の playbook を使って MariaDB 10.5 をインストールして MariaDB のデータベースとユーザーを作成する方法です。 Alma Linux 10.4 で確認しました。Alma Linux の AppStream からは MariaDB 10.5 をインストールできます。
1 2 3 4 5 6 7 8 9 10 11 |
- name: Install MariaDB packages from AppStream yum: name: ['mariadb', 'mariadb-common', 'mariadb-server', 'mariadb-server-utils', 'mariadb-backup'] - name: Start and enable MariaDB Service service: name: mariadb state: started enabled: true |
データベースの作成
MariaDB 10.4 からはデフォルトでローカルからアクセスする場合の root パスワードは要求されていません。そこで playbook にもパスワードの記載をしないでもアクセスできると思い、何も記載しないでやってみます。
1 2 3 4 5 6 7 8 |
- name: Create Database mysql_db: name: "{{ db_name }}" state: present encoding: utf8mb4 collation: utf8mb4_general_ci |
unable to find /root/.my.cnf. Exception message: (1698, Access denied for user) エラー
回避策として、login_host, login_user, login_password を追加してみます。
1 2 3 4 5 6 7 8 9 10 11 |
- name: Create Database mysql_db: login_host: localhost login_user: root login_password: "{{ mysql_root_password }}" name: "{{ db_name }}" state: present encoding: utf8mb4 collation: utf8mb4_general_ci |
1 2 3 4 5 6 7 8 9 10 11 |
- name: Create Database mysql_db: login_unix_socket: /var/lib/mysql/mysql.sock login_user: root login_password: "{{ mysql_root_password }}" name: "{{ db_name }}" state: present encoding: utf8mb4 collation: utf8mb4_general_ci |
ユーザーの作成
こちらも同様に login_unix_socket を使った設定をします。
1 2 3 4 5 6 7 8 9 10 11 12 |
- name: Create Database User mysql_user: login_unix_socket: /var/lib/mysql/mysql.sock login_user: root login_password: "{{ mysql_root_password }}" name: "{{ db_user_name }}" password: "{{ db_user_password }}" host: "{{ db_hostname }}" priv: '*.*:ALL' state: present |
root のパスワード設定
最後に root のパスワードを設定するのも Ansible でやってみます。 db_root_password に新しいパスワード、mysql_root_password は古いパスワード(空)です。
1 2 3 4 5 6 7 8 9 10 |
- name: Set mariadb root password mysql_user: login_unix_socket: /var/lib/mysql/mysql.sock login_user: root login_password: "{{ mysql_root_password }}" name: root password: "{{db_root_password}}" host_all: yes |