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接続します。
1 2 |
$ ssh -i ~/.ssh/秘密鍵名.pem ユーザ名@パブリックDNS |
MySQLをインストール
Amazon Linux2にはMariaDBというMySQL互換のデータベースサーバーがデフォルトでインストールされていますが、MySQLはインストールされていません。Amazon Linux2では、amazon-linux-extrasというExtras Libraryを使用してアプリケーションおよびソフトウェア更新をインスタンスにインストールできます。このようなソフトウェア更新を、トピックと呼びます。特定のバージョンのトピックをインストールしたり、最新バージョンを使用するためにバージョン情報を省略したりすることができます。
1 2 3 4 5 |
#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を削除する必要はありません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
=============================================================================================== 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をインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
#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 ]での設定は必要に応じて行ってください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#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 ]に変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#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 |