Edited at

AWS Amazon Linux2にMySQL5.7を構築する

More than 1 year has passed since last update.

Amazon Linux 2 に MySQL 5.7 のインストールをしようとして思いの外詰まってしまったので手順を残しておく。


前提


  • Amazon Linux 2 AMI (HVM)


手順

デフォルトでmariaDBがデフォルトが入っているのでアンインストールしておく。

$ sudo yum list installed | grep mariadb

$ sudo yum remove mariadb-libs

リポジトリを追加する。centos7系なのでel6ではなくel7をインストールする。

$ sudo yum install http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

インストールする。

$ sudo yum install mysql-community-server

依存性の問題が解決できないときはel6で入れてしまっていなか確認する。

念のためキャッシュも消しておくとよい。

$ sudo yum clean all

$ sudo rm -rf /var/cache/yum

正しくインストールされたことを確認する。

$ yum repolist enabled | grep "mysql.*-community.*"

バージョンを確認する。

$ mysql --version

mysql Ver 14.14 Distrib 5.7.23, for Linux (x86_64) using EditLine wrapper

$ mysqld -V
mysqld Ver 5.7.23 for Linux on x86_64 (MySQL Community Server (GPL))

起動してみる。

$ sudo /bin/systemctl start mysqld.service

起動できているか確認してみる。

$ systemctl list-units | grep mysqld.service

mysqld.service loaded active running MySQL Server

自動で起動するようにしておく。

# 現在の状態を確認する

$ systemctl is-enabled mysqld.service
disabled

# enableに変更しておく
$ systemctl enable mysqld.service

ログインしてみる。

$ mysql -u root -p

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

デフォルトでパスワードかかっていた…

パスワードを確認する。

$ cat /var/log/mysqld.log | grep password

2018-09-01T10:27:36.011362Z 1 [Note] A temporary password is generated for root@localhost: ************

調べたパスワードで再度ログインしてみる。

$ mysql -u root -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 5.7.23

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

できた!

パスワードを変更しておく。デフォルトの制約が強いのでちょっと弱めておく。

mysql> SET GLOBAL validate_password_length=8;

Query OK, 0 rows affected (0.00 sec)

mysql> SET GLOBAL validate_password_policy=LOW;
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER USER root@localhost IDENTIFIED BY 'new password';
Query OK, 0 rows affected (0.00 sec)

文字コードを確認する。

mysql> show variables like "chara%";

+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

設定ファイルに以下の2行を追記して再起動する。


/etc/my.cnf

[mysqld]

character-set-server=utf8

[client]
default-character-set=utf8


$ sudo /bin/systemctl restart mysqld.service

新しいユーザーを作成する。

mysql> GRANT ALL PRIVILEGES ON `app_production`.* TO `username`@localhost IDENTIFIED BY 'new password';

ログインできるか試してみる。

$ mysql -u username -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.23 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

おわり!