『MySQL 8.0.6 設置』編
MySQL8 への移行を行い、最新の LAMP環境 が整った上で WordPress5.2.2 を設置します。
※ 2019/10/15 追記
WordPress 5.2.4 でも正常動作します。
「最新のローカル LAMP 環境で WordPress を構築する」は、4編に分けてあります。他の記事は ▼ をご参照ください。
MySQL 5.x から MySQL 8.x への移行の失敗例
yum upgrade mysql-community-server で失敗
libsasl2.so.2 のライブラリが見つからなくてエラーが発生
[root@ centos7〜]# sudo yum upgrade mysql-community-server Error:Package:mysql-community-server-8.0.16-2.el6.x86_64(mysql80-community) Requires:libsasl2.so.2()(64bit) You could try using--skip-broken to work around the problem You could try running:rpm-Va--nofiles--nodigest
ソフトリンクをかけても解決されない
[root@ centos7〜]# ln -s /lib64/libsasl2.so.3.0.0/lib64/libsasl2.so.2 [root@ centos7〜]# yum clean all # << エラー発生時のキャッシュされたのを除去
OS の Reboot 後、再度試しても失敗!
[root@ centos7〜]#sudo yum upgrade mysql-community-server
DataFile をまるごとバックアップ
[root@centos7 ~]# cp -aR /var/lib/mysql/ /var/lib/mysql_bk/
既存の MySQL パッケージを削除
#インストールされたパッケージを確認 [root@centos7 ~]# yum list installed | cut -d " " -f 1 | grep mysql #不要なパッケージを削除します。 [root@centos7 ~]# yum remove -y `yum list installed | cut -d " " -f 1 | grep mysql`
MySQL リポジトリを追加
最新版 を確認してリポジトリに追加します。(2019/06/19現在)
[root@centos7 ~]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
MySQL 8.0.16 を設置
yum -y install mysql-community-devel yum -y install mysql-community-server
デフォルト認証プラグインを変更
MySQL8.0 から デフォルトの認証プラグイン が mysql_native_password ⇒ caching_sha2_password に変更されました。
WordPress 5.2.2 バージョンで caching_sha2_password をサポートしていないため、デフォルトの認証プラグインを mysql_native_password に変更しておきます。
注意!
万一、変更の前に WordPress ユーザーを作成した場合、caching_sha2_password 認証プラグインが適用されてしまいます。DB に接続して SQL 文で mysql_native_password に変更しない限り、ログインが出来なくなります。出来れば、下記の設定を変更してからユーザーを追加してください。
[root@centos7 ~]# vi /etc/my.cnf #default-authentication-plugin=mysql_native_password ↓↓↓ default-authentication-plugin=mysql_native_password
MySQL 8.0 を起動して、サービス自動起動を有効にします。
systemctl start mysqld systemctl enable mysqld
設置直後の初期設定
初期パスワードの変更
Root ユーザの初期パスワードはそのまま使えないため、下記のように変更してください。
MySQL を初めてインストールした場合のみ実行します。
以下のコマンドで初期パスワードを確認します。
grep password /var/log/mysqld.log
初期パスワードを確認したら、mysql_secure_installation を実行してパスワードを変更します。
[root@centos7 ~]# 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: # << 再入力 VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No: y # << VALIDATE PASSWORD を有効に There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0 # << パスワードの強度を指定 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 # << root パスワードの変更 New password: # << 上記で設定した password validation policy に合わせて入力 Re-enter new password: # << 再入力 Estimated strength of the password: 50 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, 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 # << anonymous ユーザーを削除 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 # << リモートからのrootユーザーのログイン禁止 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 # << テストDB削除 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 # << privilege tableをリロードして変更内容を適用する Success. All done!
インストールされた MySQL のバージョンをチェックします。
[root@centos7 ~]# mysql --version mysql Ver 8.0.16 for Linux on x86_64 (MySQL Community Server - GPL)
以上、MySQL の設置が完了しました。
これからは Apache httpd 2.4 と MySQL の ログローテーション の設定をしておきます。
ログローテーション(logrotate.d)設定
Apache httpd 2.4.39 のログローテーション(logrotate.d)を設定
[root@centos7 ~]# vi /etc/logrotate.d/httpd24 /usr/local/apache2/logs/*log { daily missingok dateext rotate 60 create 644 daemon daemon sharedscripts postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }
確認!
[root@centos7 ~]# logrotate -dv /etc/logrotate.d/httpd24 reading config file /etc/logrotate.d/httpd24 Allocating hash table for state file, size 15360 B Handling 1 logs rotating pattern: /usr/local/apache2/logs/*log after 1 days (60 rotations) empty log files are rotated, old logs are removed considering log /usr/local/apache2/logs/access_log ...
MySQL 8.0.16 のログローテーション(logrotate.d)を設定
[root@centos7 ~]# vi /etc/logrotate.d/mysql80 /var/log/mysqld.log { create 644 mysql mysql notifempty weekly rotate 5 missingok postrotate if test -x /usr/bin/mysqladmin && /usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf ping &>/dev/null then /usr/bin/mysqladmin --defaults-extra-file=/root/.my.cnf flush-logs fi endscript }
確認!
[root@centos7 ~]# logrotate -dv /etc/logrotate.d/mysql80 reading config file /etc/logrotate.d/mysql80 Allocating hash table for state file, size 15360 B Handling 1 logs rotating pattern: /var/log/mysqld.log weekly (5 rotations) empty log files are not rotated, old logs are removed considering log /var/log/mysqld.log log does not need rotating (log has been rotated at 2019-5-26 8:0, that is not week ago yet)
MySQL の Root ユーザのパスワードファイルを作成しておきます。
[root@centos7 ~]# vi /root/.my.cnf [mysqladmin] user=root password="your-password-here"
パーミッションを Root 自分に変更しておきます。
chown root:root /root/.my.cnf chmod 600 /root/.my.cnf
LAMP 関連パッケージのサービス自動起動設定を確認
httpd、httpd2、mysql、php-fpm
[root@centos7 ~]# systemctl list-unit-files | grep -e httpd -e php-fpm -e mysqld.service httpd.service enabled httpd2.service enabled mysqld.service enabled php-fpm.service enabled [root@centos7 ~]# systemctl disable httpd
以上、最新の LAMP 環境が整いました。
次回 は WordPress 5.2.2 をインストールおよび設定を行います。
コメント