Help us understand the problem. What is going on with this article?

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
関連
参考
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした