CentOS8.0では、MariaDBというMySQL派生のDBと、本家MySQLの両方がインストールディスクに収められていますので、自分で選択できるようになりました。
MariaDBは、DBとしての機能はMySQLとほぼ同じなので、そのまま使っても特に問題はないのですが、うちの環境では普段MySQLを使っているので、MySQLをインストールしていきます。
インストール自体はそんなに大変ではありませんが、備忘録として手順をメモメモ。
MariaDBのアンインストール
もしMariaDBをインストールしてしまっていたら、まずはアンインストールします。
インストールディスクからインストールしている場合、MariaDBのバージョンは10.3.11。バージョン10からはMySQLとは少し違った方向へ進化しているため、機能的に同一とみられるMySQLは存在せず。
なので、MySQL5.6以降からの置き換えをするのであれば、動作検証は慎重に行った方がいいかもしれません。
話は脱線しましたが、ではまず、インストールされているパッケージの確認。
# dnf list installed | grep mariadb
mariadb.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed
mariadb-common.x86_64 3:10.3.11-2.module_el8.0.0+35+6f2527ed
MariaDBをアンインストールします。
# dnf remove mariadb
依存性関連のパッケージがあれば、一緒に削除されます。自分の環境では、MariaDB本体とcommonの2つが一緒に削除されました。
アンインストールではなく、無効化しておきたい場合はこちら。
# dnf module disable mariadb
MySQL8.0のインストール
インストールディスクにはMySQL8.0.13が収められていますが、せっかくなので最新版をインストールしましょう。
以下のコマンドで、最新版のバージョンが確認できます。
# dnf info mysql
名前 : mysql
バージョン : 8.0.17
リリース : 3.module_el8.0.0+181+899d6349
アーキテクチ : x86_64
サイズ : 11 M
ソース : mysql-8.0.17-3.module_el8.0.0+181+899d6349.src.rpm
Repo : AppStream
:
:
:
2019年10月下旬時点での最新版は、8.0.17でした。ではインストールします。
# dnf install @mysql:8.0
依存関係のあるパッケージなども一緒にインストールしてくれます。
必要に応じて、このタイミングでPHP用のライブラリ群もインストールしておくといいかも。
# dnf install php-mysqlnd
インストール後、バージョンを確認します。
# mysql --version
mysql Ver 8.0.17 for Linux on x86_64 (Source distribution)
以上でMySQL8.0のインストールが完了です。ついでに自動起動の設定をして、MySQLを起動させておきましょう。
# systemctl enable mysqld
# systemctl start mysqld
MySQLの初期設定
MySQLの初期設定は、いくつかの質問に答えていくだけで完了します。質問部分だけ抜粋してみました。# mysql_secure_installation
Press y|Y for Yes, any other key for No: y
※VALIDATE PASSWORDを変更するのでy
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
※社内なのでLOW、通常はSTRONGがいいかも
New password:(設定したいパスワードを入力)
Re-enter new password:(設定したいパスワードを再入力)
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
※設定したパスワードで続行するのでy
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
※匿名ユーザーは不要なのでy
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
※rootでリモートログインはしないのでy
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
※テスト用のデータベースは不要なのでy
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
※ここまでの設定を反映させたいのでy
続いて、文字コードの設定…ですが、MySQL8.0では、デフォルトでutf8mb4が指定されているようで、特に設定する必要はありませんでした。
mysql> show variables like "chara%";
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | utf8mb4 |
| character_set_connection | utf8mb4 |
| character_set_database | utf8mb4 |
| character_set_filesystem | binary |
| character_set_results | utf8mb4 |
| character_set_server | utf8mb4 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
MySQLユーザーの作成
いつもrootユーザーでDBを操作するわけにはいかないので、ユーザーを作成します。
まずはMySQLにログインします。
# mysql -u root -p
Enter password:(rootユーザーに設定したパスワード)
今回はローカル環境でしか使用しないサーバなので、全ての権限を持ったユーザーを作成します。通常は、こんなユーザーは作りませんよ!
mysql> CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
mysql> GRANT ALL ON *.* TO 'ユーザー名'@'localhost' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
MySQL8.0からは、GRANT構文だけでユーザーを作成することはできず、CREATE USER構文でまずユーザーを作成してから、GRANT構文で権限を与える、というように厳密になりました。考えてみれば当たり前の話ですね。
以降は、このユーザーで操作をするため、ログインしなおします。
mysql> exit
# mysql -u ユーザー名 -p
Enter password:(作成したユーザーに設定したパスワード)
phpMyAdminのインストール
いつもコマンドラインから操作するのは面倒なので、Webブラウザから操作できるphpMyAdminをインストールしたいのですが、dnfでインストールしようと思ったらパッケージが見当たらず。
無いものは仕方ないので、ソースを取得することにします。2019年10月下旬時点の最新版は4.9.1。
# wget https://files.phpmyadmin.net/phpMyAdmin/4.9.1/phpMyAdmin-4.9.1-all-languages.zip
# unzip phpMyAdmin-4.9.1-all-languages.zip
# mv phpMyAdmin-4.9.1-all-languages /usr/share/phpmyadmin
phpMyAdminの設定
設定ファイルの編集をします。
config.inc.php
まずはconfig.inc.phpに、暗号化用のパスフレーズを設定します。これをやらないと、phpMyAdmin上でエラーが表示されてしまいます。
設定ファイルはサンプルがあるので、それをコピーし、編集します。
# cd /usr/share/phpmyadmin
# cp -a config.sample.inc.php config.inc.php
# vi config.inc.php
ファイルの先頭のあたりに、以下の行があります。
/**
* This is needed for cookie based authentication to encrypt password in
* cookie. Needs to be 32 chars long.
*/
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
「$cfg['blowfish_secret']」の値に、32桁以上のパスフレーズを入力します。英数字であれば何でもいいです。何なら、以下のコマンドでランダムな文字列を生成してしまいましょう。
# openssl rand -base64 100 | fold -w 32 | head -1
phpMyAdmin.conf
アクセス権に関する設定を行います。これをやらないと、phpMyAdminにアクセスできません。
# vi /etc/httpd/conf.d/phpMyAdmin.conf
Alias /phpMyAdmin /usr/share/phpmyadmin/
Alias /phpmyadmin /usr/share/phpmyadmin/
<Directory /usr/share/phpmyadmin/>
AddDefaultCharset UTF-8
<IfModule mod_authz_core.c>
# Apache 2.4
Require all granted
Require ip 192.168.1.0/24 ← 自分の環境に合わせる
</IfModule>
<IfModule !mod_authz_core.c>
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
</IfModule>
</Directory>
Require ipの部分は、使う環境でのネットワークセグメントに書き換えてください。
保存したら、Webサーバを再起動します。
# systemctl restart httpd
再起動したら、ブラウザからアクセス!
URL例:http://centos8/phpmyadmin/
ログイン画面が表示されればOKです。
もし、403 Forbiddenでページが表示されなかったら。おそらくwww.sockの権限がないため、エラーが出ているはずです。/var/log/httpd/error_logを確認してみてください。
[proxy:error] [pid 11324:tid 140585444779776] (13)Permission denied: AH02454: FCGI: attempt to connect to Unix domain socket /run/php-fpm/www.sock (*) failed
[proxy_fcgi:error] [pid 11324:tid 140585444779776] [client 192.168.xxx.xxx:xxxxx] AH01079: failed to make connection to backend: httpd-UDS
こんなエラーが出ていませんか?どうせ外に出ないローカル環境オンリーのサーバなので、ソケットの権限を変えてしまいましょう。
# chmod 777 /run/php-fpm/www.sock
さいごに
以上で、MySQLおよびphpMyAdminのインストールと設定が終わりました。ここまでやっておけば、WordpressをインストールしてWebサイトのテスト環境が作れます!
お疲れ様でした!
コメント