Amazon Linux2にMySQLクライアントを4バージョンいれてみた。Ansible Playbookを添えて

Amazon Linux2標準のリポジトリはmariadbだったりして、ちょと癖がありMysqlのクライアントを Mariadb 5.5, Mariadb 10.2, Mysql 5.7, Mysql 8.0をそれぞれインストールする際のコマンドと、勢いでAnsibleのプレイブックを作ったので公開します。
2019.05.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

福岡オフィスの梶原です。Amazon Linux2にMySQLクライアントを入れる機会があったのですが Amazon Linux2標準のリポジトリはMariaDBを参照していたりして、ちょと癖があり

  • MariaDB 5.5
  • MariaDB 10.2
  • MySQL 5.7
  • MySQL 8.0

のMySQLクライアントをインストールする際のそれぞれのコマンドと、勢いでAnsibleのプレイブックを作ったので公開します。

※注意 MySQLの標準リポジトリ利用は無保証となります。使用する際は検証等は十分にされてください。

前提条件

2019/05/20 時点の情報です。リポジトリの更新タイミング等でインストールされるバージョンは変わる可能性があります

MariaDB 5.5

コマンドライン

#Extras Libraryをdisableに(有効にしたことがなければ不要です)
$ sudo amazon-linux-extras disable lamp-mariadb10.2-php7.2
# Mysql Client Install
$ sudo yum install -y mariadb
... 省略
Installed:
mariadb.x86_64 1:5.5.62-1.amzn2.0.1

Dependency Installed:
mariadb-libs.x86_64 1:5.5.62-1.amzn2.0.1

Complete!

$ mysql --version
mysql Ver 15.1 Distrib 5.5.62-MariaDB, for Linux (x86_64) using readline 5.

Ansbile Playbook

---
- name: amazon-linux-extras disable lamp-mariadb10.2-php7.2
shell: amazon-linux-extras disable lamp-mariadb10.2-php7.2

- name: install mariadb
yum:
name: mariadb
state: present

MariaDB 10.2

コマンドライン

#Extras Libraryを有効にします。
$ sudo amazon-linux-extras enable lamp-mariadb10.2-php7.2
# Mysql Client Install
$ sudo yum install -y mariadb
... 省略
Installed:
mariadb.x86_64 3:10.2.10-2.amzn2.0.3

Dependency Installed:
mariadb-common.x86_64 3:10.2.10-2.amzn2.0.3 mariadb-config.x86_64 3:10.2.10-2.amzn2.0.3 mariadb-libs.x86_64 3:10.2.10-2.amzn2.0.3

Complete!

$ mysql --version
mysql Ver 15.1 Distrib 10.2.10-MariaDB, for Linux (x86_64) using EditLine wrapper

Ansbile Playbook

---
- name: amazon-linux-extras enable lamp-mariadb10.2-php7.2
shell: amazon-linux-extras enable lamp-mariadb10.2-php7.2

- name: install mariadb
yum:
name: mariadb
state: latest

※ すでにmariadbが入っていることを考慮してstateはlatestにしています。

MySQL 5.7

コマンドライン

# Mysqlの標準リポジトリを追加します
$ sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
... 省略
Installed:
mysql80-community-release.noarch 0:el7-3

Complete!

# 標準の状態だと8.0がインストールされるので設定を5.7に変更します
$ sudo yum-config-manager --disable mysql80-community
$ sudo yum-config-manager --enable mysql57-community
# Mysql Client Install
$ sudo yum install -y mysql-community-client
... 省略
Installed:
mysql-community-client.x86_64 0:5.7.26-1.el7

Dependency Installed:
mysql-community-common.x86_64 0:5.7.26-1.el7 mysql-community-libs.x86_64 0:5.7.26-1.el7

Complete!

$ mysql --version
mysql Ver 14.14 Distrib 5.7.26, for Linux (x86_64) using EditLine wrapper

Ansbile Playbook

---
- name: rpm install MySQL Yum Repository
yum:
name: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
state: present

- name: enable mysql57-community
shell: |
yum-config-manager --disable mysql80-community
yum-config-manager --enable mysql57-community

- name: install mysql-community-client
yum:
name: mysql-community-client
state: present

MySQL 8.0

コマンドライン

# Mysqlの標準リポジトリを追加します
$ sudo yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
... 省略
Installed:
mysql80-community-release.noarch 0:el7-3

Complete!

# 標準の状態で8.0の設定ですが一応有効に
$ sudo yum-config-manager --enable mysql80-community
# Mysql Client Install
$ sudo yum install -y mysql-community-client
... 省略
Installed:
mysql-community-client.x86_64 0:8.0.16-2.el7

Complete!

$ mysql --version
mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)

Ansbile Playbook

---
- name: rpm install MySQL Yum Repository
yum:
name: https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
state: present

- name: enable mysql80-community
shell: |
yum-config-manager --enable mysql80-community

- name: install mysql-community-client
yum:
name: mysql-community-client
state: latest

※ すでにMySQLクライアントが入っていることを考慮してstateはlatestにしています。

まとめ

  • MySQLクライアントが欲しいということであれば、MariaDB 5.5を
  • できれば、新しいものをという事であれば拡張ライブラリを有効にして、MariaDB 10.2
  • いやいや、標準をということであればMySQL 8.0
  • いや、そこまで最新じゃなくてMySQL 5.7で

という状況には正直あまりならないかもしれませんが、Ansible Playbookも置いておくので、未来の自分の役に立つといいなと思います。

おまけ

Ansibleでmysqlのバージョンを出してみた

---
- shell: mysql --version
changed_when: no
register: mysql_version
- debug: var=mysql_version.stdout_lines

参考URL

https://dev.mysql.com/doc/refman/8.0/en/linux-installation-yum-repo.html

https://qiita.com/sakuraya/items/b5d6394983a3c7a9a390