Edited at

AWSのEC2で行うAmazon Linux2(MySQL5.7)環境構築

Amazon Linux2にMySQL5.7の環境構築をしていきます。MySQL8のリポジトリに5.7も含まれているのに気づかず、随分と探し回ってしまいました。amazon-linux-extrasではmysqlはインストールできないのかな。


バージョン情報



  • Mac OS 10.11.6(El Capitan)

  • Amazon Linux 2 AMI (HVM)


    • mysqld Ver 5.7.22 for Linux on x86_64 (MySQL Community Server (GPL))




その他情報


事前に用意しておく必要があるもの


  • 接続先EC2のパブリックDNS

  • 作業ユーザ(Amazon Linux2の場合デフォルトはec2-user)

  • EC2からダウンロードした秘密鍵(デフォルトは****.pem)


ssh接続

以下のコマンドを実行してAWSのEC2にSSH接続します。

$ ssh -i ~/.ssh/秘密鍵名.pem ユーザ名@パブリックDNS


MySQLをインストール

Amazon Linux2にはMariaDBというMySQL互換のデータベースサーバーがデフォルトでインストールされていますが、MySQLはインストールされていません。Amazon Linux2では、amazon-linux-extrasというExtras Libraryを使用してアプリケーションおよびソフトウェア更新をインスタンスにインストールできます。このようなソフトウェア更新を、トピックと呼びます。特定のバージョンのトピックをインストールしたり、最新バージョンを使用するためにバージョン情報を省略したりすることができます。

#amazon-linux-extrasでmysqlのTopicを検索

$ amazon-linux-extras list
$ amazon-linux-extras info mysql
Topic mysql is not found.

amazon-linux-extrasでmysqlのTopicを検索してみても見つかりませんでしたので、MySQL公式のyumリポジトリを追加してインストールします。mysqlをインストールする際、mariadbと入れ替えが行われるので、mariadbを削除する必要はありません。

===============================================================================================

Package アーキテクチャー
バージョン リポジトリー 容量
===============================================================================================
インストール中:
mysql-community-libs x86_64 5.7.22-1.el7 mysql57-community 2.1 M
mariadb-libs.x86_64 1:5.5.56-2.amzn2 を入れ替えます
mysql-community-libs-compat x86_64 5.7.22-1.el7 mysql57-community 2.0 M
mariadb-libs.x86_64 1:5.5.56-2.amzn2 を入れ替えます
mysql-community-server x86_64 5.7.22-1.el7 mysql57-community 165 M
依存性関連でのインストールをします:
mysql-community-client x86_64 5.7.22-1.el7 mysql57-community 24 M
mysql-community-common x86_64 5.7.22-1.el7 mysql57-community 274 k


インストール

MySQL公式のyumリポジトリを追加してmysql5.7をインストールします。

#mariadbがインストールされているか確認

$ yum list installed | grep mariadb
mariadb-libs.x86_64 1:5.5.56-2.amzn2 installed

#mysqlがインストールされているか確認
$ yum list installed | grep mysql

#mysqlがインストールできるか確認
$ yum info mysql
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
エラー: 表示するパッケージはありません

#mysql8.0リポジトリの追加(このリポジトリに5.7も含まれています)
$ sudo yum localinstall https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm -y

#mysql8.0リポジトリの無効化
$ sudo yum-config-manager --disable mysql80-community

#mysql5.7リポジトリの有効化
$ sudo yum-config-manager --enable mysql57-community

#mysql5.7がインストールできるか確認
$ yum info mysql-community-server

#mysqlインストール
$ sudo yum install mysql-community-server -y
$ mysqld --version
mysqld Ver 5.7.22 for Linux on x86_64 (MySQL Community Server (GPL))

#自動起動設定
$ sudo systemctl start mysqld.service
$ sudo systemctl enable mysqld.service
$ systemctl status mysqld.service


初期設定

mysqlの初期設定を行います。[ mysql_secure_installation ]での設定は必要に応じて行ってください。

#rootパスワードを確認

$ cat /var/log/mysqld.log | grep password
A temporary password is generated for root@localhost: ************

#初期設定
$ mysql_secure_installation
Enter password for user root: ************
New password: @@@@@@@@@@@@
Re-enter new password: @@@@@@@@@@@@
Change the password for root ? ((Press y|Y for Yes, any other key for No) : No
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Yes
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Yes
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Yes
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Yes


文字コード設定

mysqlの文字コードを[ utf8mb4 ]に変更します。

#mysqlにログイン

$ mysql -u root -p
Enter password: @@@@@@@@@@@@

#文字コードの確認
mysql> show global variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> exit

#文字コードの変更([mysqld]と[client]セクションと設定を追加)
$ sudo vi /etc/my.cnf
+ [mysqld] (既に記述されている場合は省略)
+ character_set_server=utf8mb4

+ [client]
+ default-character-set=utf8mb4

#mysql再起動
$ sudo systemctl restart mysqld.service

#mysqlにログイン
$ mysql -u root -p
Enter password: @@@@@@@@@@@@

#文字コードの確認
mysql> show global variables like 'character%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
mysql> exit


関連


参考