2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

文系出身エンジニアが学ぶMySQLサーバーの構築(AWS)

Last updated at Posted at 2020-02-19

記事を書く背景

『Amazon Web Services 基礎からのネットワーク&サーバー構築』を読み進める中で、AWSにMySQLサーバーを構築する際のつまずいたところとその対処方法を記載しようと思います。

環境

OS : Amazon Linux release 2 (Karoo)

つまずきポイント1:MySQLをインストールできない

下記コマンドを打つとエラーが発生。

$ sudo yum -y install mysql-server

##原因
Amazon EC2のyumリポジトリにMySQLのリポジトリが存在していないため。
下記コマンドで確認できます。

$ yum list installed | grep mysql

##対処方法
下記コマンドでAmazon EC2のyumリポジトリにMySQLのリポジトリを追加

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

これでめでたくMySQLをインストールする準備が整いました。
そして、下記コマンドでMySQLをインストールします。

$ sudo yum -y install mysql-community-server

無事にインストールできていることを確認します。

$ mysqld --version
mysqld  Ver 5.7.29 for Linux on x86_64 (MySQL Community Server (GPL))

##ちなみに、、、
Amazon EC2にはMySQL派生版のMariaDBがインストール済みだそうです。
こちらは使わないのでアンインストールしました。

// MariaDBがインストールされていることを確認
$ sudo yum list installed | grep mariadb

// MariaDBの削除
$ sudo yum remove mariadb-libs

つまずきポイント2:Passwordの設定ができない

passwordの変更をしようと下記コマンドを打つとエラーが出てしまい、ログインパスワードの変更ができない。

$ mysqladmin -u root password
ERROR 1045 (28000): Access denied for user 'ec2-user'@'localhost' (using password: NO)

##原因
rootユーザの権限設定がされていない

##対処方法
1. MySQLを停止させる

$ sudo systemctl stop mysqld

2. MySQLの環境変数にオプションを追加
→権限システムを使用しないで起動することが可能になる

$ sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

3. MySQLの起動

$ sudo systemctl start mysqld

4. MySQLにログイン

$ mysql -u root

5. rootユーザーのPasswordを設定


mysql> UPDATE mysql.user SET authentication_string = PASSWORD('設定したいPassword') WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

以下は環境変数にオプションを追加したのを戻す作業
6. MySQLを停止させる

$ sudo systemctl stop mysqld

7. MySQLの環境変数にオプションを元に戻す

$ sudo systemctl unset-environment MYSQLD_OPTS

8. MySQLの起動

$ sudo systemctl start mysqld

つまずきポイント3:Passwordを設定したと思ったらALTER USER statementが使えない

これでようやくPasswordも設定できたと思い、ログインしてCREATE DATABASEしたところまたもエラー発生。

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

##原因
rootのパスワードを初回設定から変えていないときに表示される

##対処方法
下記コマンドで新しいパスワードを設定する

ALTER USER 'root'@'localhost' IDENTIFIED BY '新しいパスワード';

つまずきポイント4:MySQLのパスワードポリシーに怒られる

新しいパスワードを設定する際に例えばpassなどの小文字4字で設定しようとするとデフォルトの設定ではMySQLのパスワードポリシーに違反してしまいます。

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

##原因

ポリシー Passwordに必要な条件
0 または LOW 長さ
1 または MEDIUM 長さ; 数字、小文字/大文字、および特殊文字
2 または STRONG 長さ; 数字、小文字/大文字、および特殊文字。辞書ファイル

現在のポリシーは以下のコマンドで確認できます。

mysql> SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 8     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | MEDIUM|
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

##対処方法
1. Passwordをポリシーに合わせる。
おとなしくMySQLに従う。。

2. ポリシーを変更する


-- 最低限の長さの変更
mysql> SET GLOBAL validate_password_length=4;

-- ポリシーの変更
mysql> SET GLOBAL validate_password_policy=LOW;

-- 変更の確認
SHOW VARIABLES LIKE 'validate_password%';
+--------------------------------------+-------+
| Variable_name                        | Value |
+--------------------------------------+-------+
| validate_password_check_user_name    | OFF   |
| validate_password_dictionary_file    |       |
| validate_password_length             | 4     |
| validate_password_mixed_case_count   | 1     |
| validate_password_number_count       | 1     |
| validate_password_policy             | LOW   |
| validate_password_special_char_count | 1     |
+--------------------------------------+-------+
7 rows in set (0.00 sec)

#参考文献
AWSのEC2で行うAmazon Linux2(MySQL5.7)環境構築
AWS Amazon Linux2にMySQL5.7を構築する
Change mysql root password on Centos7
MySQL 5.7.16 でERROR 1820 (HY000): You must reset your passwordの対処法(windows用)
Mysql 5.7* パスワードをPolicyに合わせるとめんどくさい件について

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?