はじめに
AWSのAmazon Linux 2にMySQL5.7をインストールしようとした際に詰まった(?)箇所が何点かあったので備忘録を。詰まった内容は以下の通りです。
行おうとした作業
- AWSのVPC上に構築した仮想サーバにMySQLをダウンロード+インストール
- インストールしたMySQLにrootユーザでログインし、DBの初期設定を行う
発生した問題
1.デフォルトで入っているMariaDBとの競合でMySQLがインストールできない
2.MySQL 5.7のrootユーザに初期パスワードが設定されており、ログインできない
※本記事執筆時点(2019/05/11)での環境の内容になります。
1. MariaDBとの競合
Amazon Linux 2にはデフォルトでMySQLの後継となるMariaDBというオープンソースのDBソフトがインストールされており、私の環境ではMySQLのインストールに失敗していました。
以下の手順でMariaDBをアンインストール→MySQLをインストールで解決しました。
# MariaDBのアンインストール
$ sudo yum remove mariadb-libs
# MySQLをダウンロード + インストール
$ sudo yum localinstall http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm
$ sudo yum -y install mysql-community-server
(とはいえ、WordPress用のDBなのでMariaDBのままでも良かったのかも・・・)
2. MySQL 5.7 rootユーザの初期パスワード
MySQL 5.7では初回起動時(systemctl start mysqldのタイミング?)でrootにランダムな初期パスワードが生成されるらしく、このパスワードが分からないためログインに失敗するという事態になりました。
これを解決するためにはMySQLのログファイルから初期パスワードを確認する必要があります。MySQLは/var/log/mysqld.log になります。ログファイル内から「temporary password」という文字列を検索し、付与されたrootユーザのパスワードを調べます。
# MySQLのログファイル内からrootユーザーに付与されたパスワードを検索
sudo cat /var/log/mysqld.log | grep 'temporary password'
[Note] A temporary password is generated for root@localhost: XXXXXX
#上記の「XXXXXX」の部分が初期パスワード
なお、MySQLのログファイルなので初回起動から時間が流れると、初期パスワードを付与した上記ログが無くなってしまうので、初回起動の操作とセットですぐ行うべき(というか普通そうするハズ)。
参考文献
第10回 yum, rpmインストールにおけるMySQL 5.6とMySQL 5.7の違い
書籍:Amazon Web Services 基礎からのネットワーク&サーバー構築