10分でMySQL8.0をamazon linuxにyumでインストールする!!
amazon linuxにMySQL8.0をインストール!
知ってはいたけど、なかなか触る機会がなく、かつ、インストールを試したことすらしていなかったので、今回、インストールの手順をメモしました。 MySQL8.0は、2018/4/19 にリリースされ、以下の機能が更新、もしくは新機能として実装されました。
MySQL :: MySQL 8.0: MySQL 5.7よりも最大2倍高速
私個人として。地味なところではありますが、降順(Descending)インデックスの対応や、Window関数などが何気にうれしいです。
細かい部分はあとで検証するとして、今回は、amazon linuxにこの、MySQL 8.0をインストールしたメモを書いていこうと思います。
amazon linux2 にMySQL8をインストールする場合は、こちらをご覧ください!
それでは、早速 amazon linuxから MySQL8をインストールしてみます。 今回検証したamazon linuxインスタンスは、全くのプレーンな環境なので、すでにMySQLの過去バージョンをインストールしているかたは、一旦アンインストールしたほうがいいと思いいます。あ、データベースが残っているかたは、一旦ディレクトリごとバックアップをしておくことをお勧めします
リポジトリをインストール
$ sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el6-1.noarch.rpm
yumリポジトリの確認
[mysql80-community]がenabledが1になっていることを確認(それ以外は、0でいいんじゃないかな?)
$sudo vi /etc/yum.repos.d/mysql-community.repo ----------------- name=MySQL 5.6 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/6/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql # Enable to use MySQL 5.7 [mysql57-community] name=MySQL 5.7 Community Server baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/6/$basearch/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql [mysql80-community] name=MySQL 8.0 Community Server baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/6/$basearch/ enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
インストール
$ sudo yum install mysql-community-server* mysql-community-devel* ======================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================== インストール中: mysql-community-server x86_64 8.0.11-1.el6 mysql80-community 378 M 依存性関連でのインストールをします: mysql-community-client x86_64 8.0.11-1.el6 mysql80-community 28 M mysql-community-common x86_64 8.0.11-1.el6 mysql80-community 656 k mysql-community-libs x86_64 8.0.11-1.el6 mysql80-community 2.5 M $ sudo yum install mysql-community-devel ======================================================================================================================== Package アーキテクチャー バージョン リポジトリー 容量 ======================================================================================================================== インストール中: mysql-community-devel x86_64 8.0.11-1.el6 mysql80-community 4.2 M トランザクションの要約 ========================================================================================================================
起動
サービス起動
$ sudo /etc/init.d/mysqld start MySQL データベースを初期化中: [ OK ] mysqld を起動中: [ OK ]
起動後設定
パスワードの確認および変更
cat /var/log/mysqld.log | grep 'temporary password' ----- 2018-05-16T12:25:41.335860Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: fdcEh-_Eo6ng
上記のパスワードでログイン
$ mysql -uroot -pfdcEh-_Eo6ng
パスワードの変更
簡単なパスワードは弾かれるので、ログイン後にこんな感じでパスワードを変更しておく
mysql> set password = '@a@1@2@3@4@55azA@' ;
再度ログイン
パスワードの設定が完了したら、再度、設定したパスワードでログインします
$ mysql -uroot -p@a@1@2@3@4@55azA@
パスワードポリシーの変更
(個人的に)厳しいパスワード基準を緩くします、ちょっと極端にいけないパスワードですが、パスワードにpasswordを設定してみました。validate_password.policyをLOWに設定することで、複雑なパスワードを設定する必要がなくなります。
mysql> SHOW GLOBAL VARIABLES LIKE '%validate_password%' ; +--------------------------------------+--------+ | Variable_name | Value | +--------------------------------------+--------+ | validate_password.check_user_name | ON | | 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 | +--------------------------------------+--------+ mysql> SET GLOBAL validate_password.policy=LOW ; SET password='password' ; Query OK, 0 rows affected (0.01 sec)
でここからが意見分かれるのですが。。。
このvalidate_password.policyってのが私だいっきらいで、例えば、MySQLインスタンス初期化したりすると、次回pluginがないとか、もうわけがわからなくなることが多いので、アンインストールしちゃう派なんですね(笑)なので、一旦自分は消しちゃいます。。。で消した後に、私はmy.cnfを設定します。
component_validate_passwordのアンインストール
いつの間にかプラグインじゃなくなっているし。。。
mysql> UNINSTALL COMPONENT 'file://component_validate_password';
ここで一旦MySQLを停止
$ sudo /etc/init.d/mysqld stop
my.cnfを設定する
インスタンス初期化&再作成
ちなみに私がここで、初期化しているのは、my.cnf中の、lower_case_table_names = 1が、初回設定でしか反映できないからです。(後から変更することはできない)
$ sudo -i # cd /var/lib/mysql # rm -rf /var/lib/mysql/* # mysqld --initialize # chown -Rf mysql:mysql /var/lib/mysql # /etc/init.d/mysqld start
でここから再度アカウントの設定しなおし
アカウントを設定しなおすという手間が自分の手法の場合でてしまうのですが、今回は、忌まわしき、validate_passwordが入っていないので楽っす
# cat /var/log/mysqld.log | grep 'temporary password' 2018-05-17T10:52:46.288146Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: V0>qC?Tg2/(l 2018-05-17T11:19:16.827959Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: eWayfJ0#5b-D ------------------------------ mysql -uroot -p パスワードは、eWayfJ0#5b-Dのほうですね。 mysql> SET password='password' ;
接続/設定チェック
# exit $ mysql -uroot -ppassword mysql> SHOW GLOBAL VARIABLES LIKE '%validate_password%' ; -------------------------------------------------- Empty set (0.00 sec) <---- validate_passwordが入っていない mysql> SHOW GLOBAL VARIABLES LIKE 'lower_case_table_names'; +------------------------+-------+ | Variable_name | Value | +------------------------+-------+ | lower_case_table_names | 1 | +------------------------+-------+ -- lower_case_table_namesが有効になっている(つまり、my.cnfの設定が反映された)
てな具合になります
一方、いやいや!!アンインストールしないで、my.cnfに設定しちゃうよってかたは。。
次回起動時のため、my.cnfにパスワードポリシーを設定しておくのが良いです
mysqlを再起動すると。validate_password.policyがMEDIUMに戻ってしまうので、my.cnfに設定しておきましょう
- こんな設定にします
$ sudo vi /etc/my.cnf [mysqld] validate_password.length=8 validate_password.mixed_case_count=0 validate_password.number_count=0 validate_password.special_char_count=0 validate_password.policy=LOW
念のため、再起動
$ sudo /etc/init.d/mysqld restart