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

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

More than 1 year has passed since last update.

CentOS 7にMySQL5.7の環境構築をしていきます。MySQL8のリポジトリに5.7も含まれているのに気づかず、随分と探し回ってしまいました。

バージョン情報

  • Mac OS 10.11.6(El Capitan)
  • CentOS Linux 7 x86_64 HVM

その他情報

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

  • 接続先EC2のパブリックDNS
  • 作業ユーザ(CentOS 7の場合デフォルトはcentos)
  • EC2からダウンロードした秘密鍵(デフォルトは****.pem)

ssh接続

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

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

MySQLをインストール

CentOS 7にはMariaDBというMySQL互換のデータベースサーバーがデフォルトでインストールされていますが、MySQLはインストールされていませんので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.el7 を入れ替えます
 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.el7 を入れ替えます
 mysql-community-server          x86_64     5.7.22-1.el7           mysql57-community     165 M

インストール

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

#mariadbがインストールされているか確認
$ yum list installed | grep mariadb
mariadb-libs.x86_64                         1:5.5.56-2.el7             installed

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

#mysqlがインストールできるか確認
$ yum info mysql
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
エラー: 表示するパッケージはありません

#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
参考サイト
2no553
インターネットと自由を愛するマークアップエンジニア兼クラウドエンジニア。20代は教師目指して働いたり、ボランティアしたり色々やって、ニートからバックパッカーとして世界一周、その後に30歳で未経験からWebプログラマーに転職。中国移住を目指して神奈川から福岡に移住し、今、西を目指し中。人生は何事も気楽が一番!
https://ninolog.com/profile/
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
ユーザーは見つかりませんでした