7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

MySQLインストール(Ansible)

Last updated at Posted at 2019-10-23

#はじめに
Ansibleを使用してMySQLインストールを行う際の手順を記述します
サンプルアプリケーションはgithubになります

##前提事項
Ansibleセットアップ手順はREADMEを参照ください
アプリケーション環境構築イメージはアプリケーション環境構築(Ansible)を参照ください

#MySQLインストール(Ansible)
MySQLインストールを行うplaybookを定義します

ファイル 内容
変数ファイル MySQLのユーザやDB等の変数を定義します
タスクファイル MySQL関連のパッケージのインストールやユーザ及びDB作成等を定義します

##MySQL関連のパッケージインストール
MySQL関連のパッケージをインストールします

- name: MySQL関連のパッケージインストール
  apt:
    force_apt_get: yes
    state: latest
    name:
      - mysql-server-5.7
      - mysql-client-5.7
      - python-mysqldb

各項目の説明は以下のとおり

項目 内容
force_apt_get 警告を回避するためにapt-get使用を指定します
※詳細は#56832を参照ください
state latestを指定して最新バージョンをインストールします
name mysqlサーバ等の必要なパッケージ名を指定します

##rootユーザのパスワード設定
rootユーザのパスワード設定を行います

- name: rootユーザのパスワード設定
  mysql_user:
    login_user: "{{ admin_user_name }}"
    login_password: "{{ admin_user_password }}"
    name: "{{ admin_user_name }}"
    password: "{{ admin_user_password }}"
    check_implicit_admin: yes
    state: present

各項目の説明は以下のとおり

項目 内容
login_user MySQL接続時のユーザ名(root)を指定します
login_password MySQL接続時のパスワードを指定します
name ユーザ名(root)を指定します
password パスワードを指定します
check_implicit_admin パスワードなしでログイン可能かをチェックします
※MySQLインストール直後はrootユーザのパスワードはないためチェックを行います
state presentを指定してパスワード変更済の場合はスキップします

##匿名ユーザ削除
セキュリティを強化するため匿名ユーザを削除します

- name: 匿名ユーザ削除
  mysql_user:
    login_user: "{{ admin_user_name }}"
    login_password: "{{ admin_user_password }}"
    name: ''
    host_all: yes
    state: absent

各項目の説明は以下のとおり

項目 内容
login_user MySQL接続時のユーザ名(root)を指定します
login_password MySQL接続時のパスワードを指定します
name 匿名ユーザを指定します
host_all 全ホストを対象にします
state 該当ユーザが存在する場合は削除します

##文字コード設定変更
MySQLの文字コードを変更します

- name: MySQL接続時の文字コードセット
  lineinfile:
    path: /etc/mysql/conf.d/mysql.cnf
    insertafter: '\[mysqld\]'
    line: 'default-character-set=utf8mb4'

- name: サーバ起動時の文字コードセット
  lineinfile:
    dest: /etc/mysql/mysql.conf.d/mysqld.cnf
    insertafter: '\[mysqld\]'
    line: "character-set-server=utf8mb4"

各項目の説明は以下のとおり

項目 内容
path 変更ファイルのパスを指定します
insertafter 文字列の挿入先を指定します
line 挿入する文字列を指定します

##DB作成
MySQLのDBを作成します

- name: DB作成
  mysql_db:
    login_user: "{{ admin_user_name }}"
    login_password: "{{ admin_user_password }}"
    name: "{{ db_name }}"
    state: present
    encoding: utf8mb4

各項目の説明は以下のとおり

項目 内容
login_user mysql接続時のユーザ名(root)を指定します
login_password mysql接続時のパスワードを指定します
name DB名を指定します
state 該当DBが存在する場合はスキップします
encoding DBの文字コードを指定します

##ユーザ追加
MySQLのユーザを作成します

- name: ユーザ追加
  mysql_user:
    login_user: "{{ admin_user_name }}"
    login_password: "{{ admin_user_password }}"
    name: "{{ user_name }}"
    password: "{{ user_password }}"
    priv: '{{ db_name }}.*:ALL'
    state: present

各項目の説明は以下のとおり

項目 内容
login_user MySQL接続時のユーザ名(root)を指定します
login_password MySQL接続時のパスワードを指定します
name ユーザ名を指定します
password パスワードを指定します
priv DBの権限付与を指定します
state 該当ユーザが存在する場合はスキップします

##MySQLサービス再起動
MySQLサービスを再起動します

- name: mysqlサービス再起動
  service:
    name: mysql
    enabled: yes
    state: restarted

各項目の説明は以下のとおり

項目 内容
name mysqlを指定します
enabled yesを指定してサーバ起動時にサービスの起動を行います
state restartedを指定して再起動を行います

#参考情報

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?