GA

2026/04/16

ansibleのcommunity.mysql.mysql_userでauth_socketでroot@localhostを作る

未来の自分にメモ。

MySQLには auth_socketプラグイン があるので、root@localhostをパスワードレスにしてOS rootからしかアクセスできなくすることができる(今日日OS rootに直接sshする機会はないと思うのでつまり sudo mysql でしかアクセスできなくする)
my.cnfのテンプレートファイルか何かの [mysqld] セクションに plugin_load を追加(もし、既に plugin_load を使っていてその後ろに書くのなら plugin_load_add を使う)

plugin_load= auth_socket.so

ユーザーをセットアップする時にroot@localhostはpluginを指定して作る。

- name: create root@localhost
  community.mysql.mysql_user:
    host: localhost
    name: root
    state: present
    login_user: root
    login_host: localhost
    login_unix_socket: "/var/lib/mysql/mysql.sock"
    sql_log_bin: false
    plugin: "auth_socket"

それ以降に別のアカウントを作る時は、OS rootでないとroot@localhostを使えなくなっているので become: true で作る。

- name: create app user
  community.mysql.mysql_user:
    host: "192.168.0.1"
    name: appuser
    password: "{{ appuser_password }}"
    priv: "app_schema.*:INSERT,UPDATE,SELECT,DELETE"
    login_user: root
    login_host: localhost
    login_unix_socket: "/var/lib/mysql/mysql.sock"
    sql_log_bin: false
  become: true

community.mysql.mysql_user module – Adds or removes a user from a MySQL or MariaDB database — Ansible Community Documentation

0 件のコメント :

コメントを投稿