Ansibleのgeerlingguy.mysqlを使って、CentOS7にMySQL8.0をインストースました。
CentOS7の場合、特に何も指定しないとMariaDBがインストールされてしまうので、pre_taskでrpmパッケージの指定といくつかの変数を書き換える必要がありました。
- hosts: db_server
become: yes
pre_tasks:
- name: Install the MySQL repository.
yum:
name: http://repo.mysql.com/mysql80-community-release-el7-1.noarch.rpm
state: present
when: ansible_os_family == "RedHat"
- name: Override variables for MySQL.
set_fact:
mysql_daemon: mysqld
mysql_packages: ['mysql-server']
mysql_log_error: /var/log/mysqld.err
mysql_syslog_tag: mysqld
mysql_pid_file: /var/run/mysqld/mysqld.pid
when: ansible_os_family == "RedHat"
roles:
- geerlingguy.mysql
書き換えるべき変数は、geerlingguy.mysql/vars/RedHat-7.ymlの中身をみるとある程度予想がつきます。ファイルを見ると、以下のようにmariadbの記載があるので変更を行っています。
- RedHat-7.yml
---
__mysql_daemon: mariadb
__mysql_packages:
- mariadb
- mariadb-server
- mariadb-libs
- MySQL-python
- perl-DBD-MySQL
__mysql_slow_query_log_file: /var/log/mysql-slow.log
__mysql_log_error: /var/log/mariadb/mariadb.log
__mysql_syslog_tag: mariadb
__mysql_pid_file: /var/run/mariadb/mariadb.pid
__mysql_config_file: /etc/my.cnf
__mysql_config_include_dir: /etc/my.cnf.d
__mysql_socket: /var/lib/mysql/mysql.sock
__mysql_supports_innodb_large_prefix: true
また上記に加えて、今回のインストールではgeerlingguy.mysqlに定義されたsecure-installationを自動で行いたくなかったため、下記の行をコメントアウトしました。
- roles/geerlingguy.mysql/tasks/main.yml
# Configure MySQL.
- include_tasks: configure.yml
#- include_tasks: secure-installation.yml
- include_tasks: databases.yml
- include_tasks: users.yml
- include_tasks: replication.yml
インストールが終わると、rootの初期パスワードがmysqlのログファイルに出力されるので控えておきます。
$ sudo more /var/log/mysqld.err | grep password
2018-11-25T12:39:05.133203Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: abc12d/?yhN?=
コマンドmysql -u root -p
でmysqlサーバに接続し、控えたパスワードを入力すればMySQLへ接続できます。
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 8.0.13
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
こちらもおススメ