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

福岡オフィスの梶原です。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