前回は OpenLiteSpeed で Web サーバーを構築しましたが、今回はその続きとしてデータベースサーバーを構築していきます。
MariaDB のインストール
今回は、サポート期限の長い MariaDB 10.11(LTS)を選択しました。
リポジトリの追加
MariaDB 公式から適切なリポジトリを取得し、追加します。
今回は山形大学のリポジトリーを使わせて貰うことにします。
1 2 3 4 5 6 7 8 9 10 | # MariaDB 10.11 RedHatEnterpriseLinux repository list - created 2023-11-09 00:24 UTC # https://mariadb.org/download/ [mariadb] name = MariaDB # rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details. # baseurl = https://rpm.mariadb.org/10.11/rhel/$releasever/$basearch baseurl = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/10.11/rhel/$releasever/$basearch # gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB gpgkey = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB gpgcheck = 1 |
MariaDB のインストール
追加したリポジトリから MariaDB をインストールしていきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | # dnf install MariaDB-server サブスクリプション管理リポジトリーを更新しています。 メタデータの期限切れの最終確認: 0:01:28 前の 2023年11月09日 11時18分50秒 に実施しました。 依存関係が解決しました。 ============================================================================================================================================================= パッケージ アーキテクチャー バージョン リポジトリー サイズ ============================================================================================================================================================= インストール: MariaDB-server x86_64 10.11.5-1.el9 mariadb 18 M 依存関係のインストール: MariaDB-client x86_64 10.11.5-1.el9 mariadb 9.2 M MariaDB-common x86_64 10.11.5-1.el9 mariadb 88 k MariaDB-shared x86_64 10.11.5-1.el9 mariadb 130 k boost-program-options x86_64 1.75.0-8.el9 rhel-9-for-x86_64-appstream-rpms 108 k daxctl-libs x86_64 71.1-8.el9 rhel-9-for-x86_64-baseos-rpms 44 k galera-4 x86_64 26.4.14-1.el9 mariadb 1.3 M libpmem x86_64 1.12.1-1.el9 rhel-9-for-x86_64-appstream-rpms 115 k libtirpc x86_64 1.3.3-2.el9 rhel-9-for-x86_64-baseos-rpms 96 k lsof x86_64 4.94.0-3.el9 rhel-9-for-x86_64-baseos-rpms 241 k ndctl-libs x86_64 71.1-8.el9 rhel-9-for-x86_64-baseos-rpms 91 k perl-DBI x86_64 1.643-9.el9 rhel-9-for-x86_64-appstream-rpms 729 k perl-File-Copy noarch 2.34-480.el9 rhel-9-for-x86_64-appstream-rpms 22 k perl-Math-BigInt noarch 1:1.9998.18-460.el9 rhel-9-for-x86_64-appstream-rpms 194 k perl-Math-Complex noarch 1.59-480.el9 rhel-9-for-x86_64-appstream-rpms 49 k perl-Sys-Hostname x86_64 1.23-480.el9 rhel-9-for-x86_64-appstream-rpms 20 k rsync x86_64 3.2.3-19.el9 rhel-9-for-x86_64-baseos-rpms 402 k socat x86_64 1.7.4.1-5.el9 rhel-9-for-x86_64-appstream-rpms 309 k 弱い依存関係のインストール: pv x86_64 1.6.20-1.el9 epel 65 k トランザクションの概要 ============================================================================================================================================================= インストール 19 パッケージ ダウンロードサイズの合計: 31 M インストール後のサイズ: 238 M これでよろしいですか? [y/N]: y … MariaDB 215 kB/s | 15 kB 00:00 GPG 鍵 0x1BB943DB をインポート中: Userid : "MariaDB Package Signing Key <package-signing-key@mariadb.org>" Fingerprint: 1993 69E5 404B D5FC 7D2F E43B CBCB 082A 1BB9 43DB From : https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB これでよろしいですか? [y/N]: y 鍵のインポートに成功しました GPG 鍵 0xC74CD1D8 をインポート中: Userid : "MariaDB Signing Key <signing-key@mariadb.org>" Fingerprint: 177F 4010 FE56 CA33 3630 0305 F165 6F24 C74C D1D8 From : https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB これでよろしいですか? [y/N]: y 鍵のインポートに成功しました … Two all-privilege accounts were created. One is root@localhost, it has no password, but you need to be system 'root' user to connect. Use, for example, sudo mysql The second is mysql@localhost, it has no password either, but you need to be the system 'mysql' user to connect. After connecting you can set the password, if you would need to be able to connect as any of these users with a password and without sudo See the MariaDB Knowledgebase at https://mariadb.com/kb Please report any problems at https://mariadb.org/jira The latest information about MariaDB is available at https://mariadb.org/. Consider joining MariaDB's strong and vibrant community: https://mariadb.org/get-involved/ … 完了しました! |
MariaDB の設定ファイル編集
設定ファイルに文字コード(utf8mb4)を設定します。
1 2 | [mysqld] character-set-server = utf8mb4 |
1 2 | [client] default-character-set = utf8mb4 |
MariaDB 起動
1 | # systemctl start mariadb |
MariaDB 自動起動
1 2 | # systemctl enable mariadb Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service. |
MariaDB 初期設定
mariadb-secure-installation を使って MariaDB の初期設定を行います。
後で phpMyAdmin をインストールするので、root パスワードを設定(変更)しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # mariadb-secure-installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user. If you've just installed MariaDB, and haven't set the root password yet, you should just press enter here. Enter current password for root (enter for none):(空 ENTER) OK, successfully used password, moving on... Setting the root password or using the unix_socket ensures that nobody can log into the MariaDB root user without the proper authorisation. You already have your root account protected, so you can safely answer 'n'. Switch to unix_socket authentication [Y/n] n ... skipping. You already have your root account protected, so you can safely answer 'n'. Change the root password? [Y/n] y New password:(root パスワード入力) Re-enter new password:(root パスワード再入力) Password updated successfully! Reloading privilege tables.. ... Success! By default, a MariaDB installation has an anonymous user, allowing anyone to log into MariaDB 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? [Y/n] 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? [Y/n] y ... Success! By default, MariaDB 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? [Y/n] 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? [Y/n] y ... Success! Cleaning up... All done! If you've completed all of the above steps, your MariaDB installation should now be secure. Thanks for using MariaDB! |
以上で MariaDB のインストールはできました。
phpMyAdmin の導入
続いて、運用上非常に便利な phpMyAdmin も導入していきます。
OpenLiteSpeed 公式に phpMyAdmin を導入するガイドがあったのですが、ざっくりしすぎていてあまり参考にはなりませんでした。
1 2 3 4 5 6 | # dnf install unzip # wget -q https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip # unzip phpMyAdmin-latest-all-languages.zip # mv phpMyAdmin-5.2.1-all-languages/ /usr/share/phpMyAdmin # rm -f phpMyAdmin-latest-all-languages.zip # mv /usr/share/phpMyAdmin/{config.sample.inc.php,config.inc.php} |
OpenLiteSpeed の設定
OLS の管理画面から「バーチャルホスト」⇒「ホスト名」⇒「コンテキスト」と辿り、新しいコンテキストを追加します。
- タイプ:Static
- URI:/phpmyadmin
- 場所:/usr/share/phpMyAdmin
- インデクスファイル:index.php
IP アドレスによるアクセス制限をかける場合
- アクセスが許可されました:(アクセスを許可する IP アドレス)
- アクセスが拒否されました:*
固定 IP アドレスに対応したプロバイダーを契約している場合は IP アドレス制限を使えるので、安心して phpMyAdmin が設置できますね。
URI が phpmyadmin だと不正アクセスも多いので、違う URI を指定するのも良いと思います。
phpMyAdmin にログインする
https://ドメイン/phpmyadmin/ にアクセスすると、無事 phpMyAdmin のログイン画面が表示されました。
phpMyAdmin のエラーメッセージ対処
メインページの下部にエラーが表示されていますので、引き続き対処していきます。
blowfish_secret を設定する
まずは暗号化 (blowfish_secret) 用の非公開パスフレーズの設定をしていきます。
パスフレーズ生成のために expect パッケージをインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # dnf install expect ============================================================================================================================================================= パッケージ アーキテクチャー バージョン リポジトリー サイズ ============================================================================================================================================================= インストール: expect x86_64 5.45.4-15.el9 rhel-9-for-x86_64-appstream-rpms 255 k 依存関係のインストール: tcl x86_64 1:8.6.10-7.el9 rhel-9-for-x86_64-baseos-rpms 1.1 M トランザクションの概要 ============================================================================================================================================================= インストール 2 パッケージ ダウンロードサイズの合計: 1.3 M インストール後のサイズ: 4.7 M これでよろしいですか? [y/N]: y # mkpasswd-expect -l 32 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
「mkpasswd-expect -l 32」で 32 桁のランダムな文字列が生成されますので、それをコピーして config.inc.php に貼り付けます。
1 2 3 4 5 | /** * This is needed for cookie based authentication to encrypt the cookie. * Needs to be a 32-bytes long string of random bytes. See FAQ 2.10. */ $cfg['blowfish_secret'] = '(ここに貼り付ける)'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */ |
テンプレートのキャッシュを有効化
キャッシュに使用される tmp ディレクトリを作成し、phpMyAdmin 全体の所有者を OpenLiteSpeed のデフォルトである nobody にまとめて変更します。
1 2 | # mkdir /usr/share/phpMyAdmin/tmp # chown nobody. -R /usr/share/phpMyAdmin |
phpMyAdmin 環境保管領域の設定
エラーメッセージのリンク(https://ドメイン/phpmyadmin/index.php?route=/check-relations)にアクセスして、データベースを作成を押すと自動的に phpmyadmin データベースを作成してくれます。
これで、エラーを潰すことができました。
php の関連パッケージをインストール
dnf で phpMyAdmin をインストールする際に、依存関係で導入される php の関連パッケージを調べてみます。(インストール自体はキャンセルします。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | # dnf install phpmyadmin サブスクリプション管理リポジトリーを更新しています。 依存関係が解決しました。 ============================================================================================================================================================= パッケージ アーキテクチャー バージョン リポジトリー サイズ ============================================================================================================================================================= インストール: phpMyAdmin noarch 5.2.1-1.el9.remi remi 8.0 M 依存関係のインストール: apr x86_64 1.7.0-11.el9 rhel-9-for-x86_64-appstream-rpms 127 k apr-util x86_64 1.6.1-23.el9 rhel-9-for-x86_64-appstream-rpms 97 k apr-util-bdb x86_64 1.6.1-23.el9 rhel-9-for-x86_64-appstream-rpms 14 k gd x86_64 2.3.2-3.el9 rhel-9-for-x86_64-appstream-rpms 134 k httpd x86_64 2.4.57-5.el9 rhel-9-for-x86_64-appstream-rpms 52 k httpd-core x86_64 2.4.57-5.el9 rhel-9-for-x86_64-appstream-rpms 1.5 M httpd-filesystem noarch 2.4.57-5.el9 rhel-9-for-x86_64-appstream-rpms 16 k httpd-tools x86_64 2.4.57-5.el9 rhel-9-for-x86_64-appstream-rpms 87 k libicu x86_64 67.1-9.el9 rhel-9-for-x86_64-baseos-rpms 9.6 M nginx-filesystem noarch 1:1.20.1-14.el9_2.1 rhel-9-for-x86_64-appstream-rpms 11 k php-common x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 684 k php-fpm x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 1.6 M php-gd x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 41 k php-intl x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 150 k php-mbstring x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 470 k php-mysqlnd x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 152 k php-pdo x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 85 k php-pecl-zip x86_64 1.19.2-6.el9 rhel-9-for-x86_64-appstream-rpms 62 k php-process x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 45 k php-xml x86_64 8.0.30-1.el9_2 rhel-9-for-x86_64-appstream-rpms 138 k redhat-logos-httpd noarch 90.4-2.el9 rhel-9-for-x86_64-appstream-rpms 18 k 弱い依存関係のインストール: apr-util-openssl x86_64 1.6.1-23.el9 rhel-9-for-x86_64-appstream-rpms 17 k mod_http2 x86_64 1.15.19-5.el9 rhel-9-for-x86_64-appstream-rpms 152 k mod_lua x86_64 2.4.57-5.el9 rhel-9-for-x86_64-appstream-rpms 62 k トランザクションの概要 ============================================================================================================================================================= インストール 25 パッケージ ダウンロードサイズの合計: 23 M インストール後のサイズ: 105 M これでよろしいですか? [y/N]: n 操作が中断されました。 |
OpenLiteSpeed のスクリプトハンドラ設定で PHP を lsphp82 で動かすように設定していますので、php- で始まるパッケージ名を lsphp82- に置き換えてインストールします。(php-fpm は除く)
また、lsphp82-pecl-zip は見つからなかったため、lsphp82-zip をインストールしておきました。
1 | # dnf install lsphp82-common lsphp82-gd lsphp82-mbstring lsphp82-mysqlnd lsphp82-pdo lsphp82-process lsphp82-xml lsphp82-zip |
これで何かの拍子にモジュールが足りないせいでエラーになる可能性が減ると思います。
自動バックアップの設定
mariadb-dump を使って、自動的にデータベースのバックアップを取るようにします。
スクリプトは定番サイトの通りに設定しました。
※mysqldump は mariadb-dump へのシンボリックリンクになっていますので、そこだけ変更しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #!/bin/bash PATH=/usr/local/sbin:/usr/bin:/bin # バックアップ先ディレクトリ BACKDIR=/backup/mariadb # MariaDB rootパスワード ROOTPASS=xxxxxxxx # バックアップ先ディレクトリ再作成 rm -rf $BACKDIR mkdir -p $BACKDIR # データベース名取得 DBLIST=`ls -p /var/lib/mysql | grep / | tr -d /` # データベースごとにバックアップ for dbname in $DBLIST do [ $dbname = "performance_schema" ] && continue table_count=`mysql -u root -p$ROOTPASS -B -e "show tables" $dbname|wc -l` [ $table_count -ne 0 ] && mariadb-dump --events -u root -p$ROOTPASS $dbname > $BACKDIR/$dbname.sql | logger -t mariadb-dump done |
MariaDB の root パスワードが記載されているので、root ユーザーしかアクセスできないようにパーミッションを変更します。
1 | # chmod 700 mariadb-backup.sh |
cron に登録して、毎日自動的にバックアップされるように設定します。
1 | # echo "0 5 * * * root /root/mariadb-backup.sh" > /etc/cron.d/backup |
バックアップを Google Drive に同期する方法は別の記事にまとめました。
まとめ
データベースサーバーには内部からのアクセスのみを想定していますので、外部からアクセスする場合はファイヤーウォールで 3306 ポートを開放する必要があります。
設定方法については過去の記事を参考にしてください。
次回はこのサーバーに WordPress をインストールしていきます。
コメント