MySQL
AWS

mysql8設定するのにやたら時間かかった

何故時間がかかったのか?

理由はmysqlのバージョン8をインストールしていたから。
mysqlのバージョン8以降は、以前は初期段階でmysqlクライアントを利用する際に、パスワード無しのrootユーザーで入ることができたのだが、バージョン8からは初期からパスワードも必要になり、パスワードの設定も大文字小文字記号を含んだ正規表現へと仕様変更されてたためでした。
地味にパスワードも上述の正規表現を使っていても、短いと recommend stlength password Y/n?と聞かれるので、適当にyを押しまくっていると、一向にsuccess!の標準出力にたどり着けない状況になる。

環境

Amazon linux

作業手順

Amazon linuxには、mariaDB という MySQL 互換のデータベースサーバーがデフォルトでインストールされている場合があり、これがインストールされた際のmysqlと衝突する可能性があるため、mariaDB 本体とデータフォルダを削除

$ yum remove mariadb-libs
$ rm -rf /var/lib/mysql/

MySQL 公式 yum リポジトリの追加

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

リポジトリの追加を確認

$ yum repolist all | grep mysql

有効状態に変換する

$ yum -y install yum-utils
$ yum-config-manager --disable mysql57-community
$ yum-config-manager --enable mysql56-community

利用できる MySQL Community Server の確認

$ yum info mysql-community-server

MySQL Community Server のインストール

$ yum -y install mysql-community-server
$ mysqld --version

自動起動

$ systemctl enable mysqld

起動と停止

$ systemctl start mysqld
$ systemctl stop mysqld

この段階で、デフォルトのパスワードがわからず、mysqlに入れなくなったため、

$ sudo cat /var/log/mysqld.log | grep 'temporary password'

を使い、
2018-01-07T07:58:25.229091Z 1 [Note] A temporary password is generated for root@localhost: ChiQjpa,1I;S
と出力されたので、この初期パスワードを使って、

mysql_secure_installation
のコマンドを使用し、初期セットアップをする。
ここで自分で新しいパスワードを設定するのだが、ここでカレントポリーシーには大文字小文字と記号を含むパスワードを作るようになっているので、それに沿った新しいパスワードを作成する。

Securing the MySQL server deployment.

Enter password for user root:

The existing password for the user account root has expired. Please set a new password.

New password:

Re-enter new password:

The 'validate_password' plugin is installed on the server.
The subsequent steps will run with the existing configuration
of the plugin.
Using existing password for root.

Estimated strength of the password: 100
Change the password for root ? ((Press y|Y for Yes, any other key for No) : y

New password:

Re-enter new password:
Sorry, passwords do not match.

New password:

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.

  • Removing privileges on test database... Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!
ーーーーーーーーーーーーーーーーーーーーーーーー

やったぜ!!ALL どーーーーーーーーん!!(ダン)