AmazonLinux2でmysqlクライアントをインストールする

mysqlコマンドで、DBサーバ上のMySQLに接続できるようになるまでの手順をメモします。

Amazon Linux のベースは RedHat 系のディストリビューションであると言われています。 特にAmazon Linux 2 RHEL7 / CentOS7 をベースとしていると言われております

なので今回は、RedHat系のディストリビューションCentOSなど)における、mysqlパッケージのmysql-community-clientをインストールします。

手順

では手順を見ていきます。
AmazonLinux2(RHEL 7 や CentOS7も同様)にはMySQLの替わりにMariaDBがデフォルトのデータベースとして採用されています。
mysqlコマンド実行時に影響するかもしれないので、削除します。

$ yum list installed | grep mariadb
$ yum remove mariadb-libs


現時点ではリポジトリがないことが確認できます。

$ yum repolist all | grep mysql


最初に書いたとおり AmazonLinux 2 は RHEL7 系に対応しているため、Red Hat Enterprise Linux 7 / Oracle Linux 7 RPM Packageをダウンロードして MySQL 用のパッケージをインストールします。
具体的なURLはOracle公式の MySQL Yum Repository から取得します。

なお、パッケージのバージョンが違うと以下のようなエラーが出てしまいます。

ERROR You need to update rpm to handle:
rpmlib(PayloadIsZstd) <= 5.4.18-1 is needed by mysql80-community-release-el9-4.noarch
RPM needs to be updated
 You could try running: rpm -Va --nofiles --nodigest
Your transaction was saved, rerun it with:
 yum load-transaction /tmp/yum_save_tx.2023-12-10.05-40.bjFWFR.yumtx


インストールします。

$ yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm
(省略)
Installed:
  mysql80-community-release.noarch 0:el7-11                                                                                                                      

Complete!


リポジトリ一覧をみてみると利用可能なリポジトリの中にmysql57-communityも入っていますが、mysql80-communityenabledとなっているため、yum install でMYSQL8.0が自動的にインストールされます。
もしMySQL5.7 をインストールしたい場合は、yum-config-managerコマンドでMYSQL8.0のリポジトリを無効化し、MySQL5.7のリポジトリを有効化した後に yum install しましょう。

bash-4.2# yum repolist all | grep mysql
(省略)
mysql57-community/x86_64                            MySQL 5.7 Co disabled
mysql57-community-source                            MySQL 5.7 Co disabled
mysql80-community/x86_64                            MySQL 8.0 Co enabled:    446
mysql80-community-debuginfo/x86_64                  MySQL 8.0 Co disabled
mysql80-community-source                            MySQL 8.0 Co disabled


mysql-community-clientをインストールします。

$ yum install -y mysql-community-client


これでmysqlコマンドが実行できるようになりました!

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

Dockerfile での記述

Dockerfile 内でインストール実行する際は、以下のように書くと良さそうです。

FROM amazonlinux:2
(省略 yum update & install など)
RUN rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm \
    && yum -y install mysql-community-client

mysql-devel について

gem mysql2 を利用する場合は、mysql-devel (mysql-community-devel) をインストールする必要があるみたいです。

mysql2をインストールする際に、mysqlのヘッダファイルが必要となるため、追加でsudo yum install mysql-community-devel -yを実行しておきましょう。これを忘れると次のmysql2をインストール中にエラーが出て途中で停止してしまいます。 gihyo.jp

Debian系のディストリビューションの場合

Debian系のLinuxディストリビューション(Ubuntuなど)の場合は、以下のパッケージをインストールします。

  • mysql-client
    なお、Debian GNU/Linux 10 (buster) からは、こちらは無くなったようなので、default-mysql-clientを使うようにします。
  • libmysqlclient-dev