ALmaLinux9へMariaDBをインストールしよう(10.5 => 10.11)
AlmaLinux 9へはMariaDBをインストールします。合わせてバージョン10.11へのアップデート、GUI管理ツールのphpMyAdminを導入します。
MariaDBをAlmaLinux 9の標準パッケージでインストールされるバージョンは10.5となります。前回時点で最新としてインストールしたバージョンが10.4でしたのでEOLが気になります。MariaDBの長期サポート版のメンテナンス情報は次の通りです。
10.5のサポート期間は終了間近なので、リポジトリにアップデートが無いか確認しました。
$ sudo dnf module list mariadb
Last metadata expiration check: 2:32:45 ago on Sat 05 Apr 2025 03:08:53 PM JST.
AlmaLinux 9 - AppStream
Name Stream Profiles Summary
mariadb 10.11 client, galera, server [d] MariaDB Module
RedHat DocumentationにMariaDB 10.5/10.11、MySQL 8.0をサポートとありました。
RedHat Documentation 2.7. MariaDB 10.5 への移行
https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/configuring_and_using_database_servers/migrating-to-mariadb-10-5_using-mariadb
10.11へアップグレード可能なので、10.11へアップグレードします。更に11.4へアップグレードするには次を参照。
Upgrading from MariaDB 10.11 to MariaDB 11.4
https://mariadb.com/kb/en/upgrading-from-mariadb-10-11-to-mariadb-11-4/
現在運用しているMariaDBを引き継ぐので一旦10.5で問題無いことを確認した後10.11へアップグレードします。新規にインストールする場合は10.11あるいはMariaDBパッケージリポジトリから11.4をインストールしてもよいと思います。
MariaDBをインストールしよう(10.5)
まず、MariaDBを標準パッケージでインストールします。
$ sudo dnf install mariadb-server
$ sudo dnf install mariadb-server
Last metadata expiration check: 3:22:51 ago on Sat 05 Apr 2025 07:46:11 PM JST.
Dependencies resolved.
============================================================================
Package Arch Version Repository Size
============================================================================
Installing:
mariadb-server x86_64 3:10.5.27-1.el9_5 appstream 9.7 M
Installing dependencies:
checkpolicy x86_64 3.6-1.el9 appstream 351 k
libaio x86_64 0.3.111-13.el9 baseos 23 k
mariadb x86_64 3:10.5.27-1.el9_5 appstream 1.6 M
mariadb-common x86_64 3:10.5.27-1.el9_5 appstream 27 k
mariadb-connector-c x86_64 3.2.6-1.el9_0 appstream 194 k
mariadb-connector-c-config noarch 3.2.6-1.el9_0 appstream 9.7 k
mariadb-errmsg x86_64 3:10.5.27-1.el9_5 appstream 211 k
mysql-selinux noarch 1.0.13-1.el9_5 appstream 36 k
perl-DBD-MariaDB x86_64 1.21-16.el9_0 appstream 151 k
perl-DBI x86_64 1.643-9.el9 appstream 700 k
policycoreutils-python-utils noarch 3.6-2.1.el9 appstream 71 k
python3-audit x86_64 3.1.5-1.el9 appstream 82 k
python3-libsemanage x86_64 3.6-2.1.el9_5 appstream 78 k
python3-policycoreutils noarch 3.6-2.1.el9 appstream 2.0 M
python3-setools x86_64 4.4.4-1.el9 baseos 551 k
Installing weak dependencies:
mariadb-backup x86_64 3:10.5.27-1.el9_5 appstream 6.5 M
mariadb-gssapi-server x86_64 3:10.5.27-1.el9_5 appstream 14 k
mariadb-server-utils x86_64 3:10.5.27-1.el9_5 appstream 210 kTransaction Summary
============================================================================
Install 19 Packages
(以下略)
インストールが完了したら、MariaDBを起動します。
$ sudo systemctl enable --now mariadb
$ mysql --version
mysql Ver 15.1 Distrib 10.5.27-MariaDB, for Linux (x86_64) using EditLine wrapper
MariaDBのrootパスワードを設定するため、MariaDBを起動しmysql_secure_installationのコマンドを実行します。
$ sudo systemctl enable --now mariadb
$ sudo mysql_secure_installation
mysql_secure_installationについては、さくらのページで解説しているので参照ください(手抜きですみません)。
"Switch to unix_socket authentication [Y/n]"が増えています。MariaDB 10.4の頃に追加されたようで、OSユーザー名とMariaDBユーザー名が一致すると、パスワード無しにMariaDBへアクセス可能となります。
ここでは運用している現況に合わせて"n"で進めます。
終えたらさっそくmysqlコマンドでrootにログインしてみます。
$ sudo mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 32
Server version: 10.5.27-MariaDB MariaDB ServerCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MariaDB [(none)]>
おや、unix socket認証時と同じ動作をしています。次のページを参照して、rootの認証がどうなっているか確認してみました。
mysql.global_priv テーブル - MariaDB Server 10.4
https://mariadb.com/ja/resources/blog/mariadb-10-4-global_priv-table/
どうやらrootはunix socket認証が有効となっているようです。"俺毎回パスワード入れてたよ"(私もです)
MariaDB [(none)]> select user,host,password,plugin from mysql.user;
| root@localhost => {
"access": 18446744073709551615,
"plugin": "mysql_native_password",
"authentication_string": "略",
"auth_or":
[
{
},
{
"plugin": "unix_socket"
}
]
}
MariaDBを10.5から10.11へアップグレードしよう
MariaDB 10.5の状態で、移行前サーバーのDBよりデータを移し、10.5から10.11へインプレースアップグレードします。手順は次を参照します。(通常、アップグレードはプログラムを一旦削除するが、インプレースアップグレードなのでMariaDBの停止だけ。)
RedHat Documentation 2.8. MariaDB 10.5 から MariaDB 10.11 へのアップグレード
https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/9/html/configuring_and_using_database_servers/upgrading-from-mariadb-10-5-to-mariadb-10-11_using-mariadb
最初に移行元のデータをダンプします。MariaDBをアクセスするサービスは事前に停止しておきます。通常はhttpdくらいでしょうか。postfix/Dovecotは参照だけなので問題ないでしょう、多分。
[移行元サーバー]$ sudo mysqldump --all_databases > all_db_dump.sql
移行先サーバーへのファイル転送はscpコマンドなどを使用します。事前に接続できるよう準備(パスワード認証を一時許可等)してください。またファイルサイズが大きくなる時は、tar/gzip等で圧縮して転送します。
移行先サーバーのMariaDBへダンプデータを取り込みます。ダンプデータを取り込んでもrootパスワードは上書きされません、念のため。
$ sudo mysql < all_db_dump.sql
取り込んだデータベースを確認します。
$ sudo mysql
MariaDB [(none)]> show databases;
古いバージョンからのダンプデータの取り込みなので、"mariadb-upgrade --force"でデータベースに問題ないことを確認しました。
$ sudo mariadb-upgrade
This installation of MariaDB is already upgraded to 10.5.27-MariaDB.
There is no need to run mysql_upgrade again for 10.5.27-MariaDB.
You can use --force if you still want to run mysql_upgrade
$ sudo mariadb-upgrade --force
Phase 1/7: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats OK
(以下略)
MariaDBを停止し、10.11へのインプレースアップグレードを実行します。
$ sudo systemctl stop mariadb
$ sudo dnf module switch-to mariadb:10.11
============================================================================
Package Arch Version Repo Size
============================================================================
Upgrading:
mariadb x86_64 3:10.11.10-1.module_el9.5.0+135+c9657a87 appstream 1.7 M
mariadb-backup x86_64 3:10.11.10-1.module_el9.5.0+135+c9657a87 appstream 6.8 M
mariadb-common x86_64 3:10.11.10-1.module_el9.5.0+135+c9657a87 appstream 27 k
mariadb-errmsg x86_64 3:10.11.10-1.module_el9.5.0+135+c9657a87 appstream 254 k
mariadb-gssapi-server
x86_64 3:10.11.10-1.module_el9.5.0+135+c9657a87 appstream 15 k
mariadb-server x86_64 3:10.11.10-1.module_el9.5.0+135+c9657a87 appstream 10 M
mariadb-server-utils
x86_64 3:10.11.10-1.module_el9.5.0+135+c9657a87 appstream 262 k
Enabling module streams:
mariadb 10.11
Transaction Summary
===========================================================================
Upgrade 7 Packages
MariaDBサービスを開始し、データベースの整合性をチェックします。問題なければ全てOKとなります。
$ sudo systemctl start mariadb
$ sudo mariadb-upgrade
MariaDBの文字コードを設定
MariaDBで使用する文字コードを"utf8mb4"に設定します。"utf8"は"utf8mb3"という名称に変わり、utf8はutf8mb3のaliasとなっているそうです。
サーバー側の設定ファイル名が"mariadb-server.cnf"に変わっています。
/etc/my.cnf.d/mariadb-server.cnf
(途中略)
[mysqld]
character-set-server = utf8mb4
/etc/my.cnf.d/mysql-clients.cnf
(途中略)
[mysql]
default-character-set = utf8mb4
設定ファイルに文字コードを設定し、MariaDBを再起動します。
$ sudo systemctl restart mariadb
$ sudo mysql
MariaDB [(none)]> 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 | utf8mb3 |
| character_sets_dir | /usr/share/mariadb/charsets/ |
+--------------------------+------------------------------+
phpMyAdminをインストールしよう
次にMySQLのGUI管理ツールであるphpMyAdminをインストールします。phpモジュールが追加されるのでphp-fpmを再起動します。
$ sudo dnf install phpmyadmin
$ sudo systemctl restart php-fpm
============================================================================
Package Arch Version Repository Size
============================================================================
Installing:
phpMyAdmin noarch 5.2.2-1.el9.remi remi 8.1 M
Installing dependencies:
fontconfig x86_64 2.14.0-2.el9_1 appstream 274 k
fribidi x86_64 1.0.10-6.el9.2 appstream 84 k
gd3php x86_64 2.3.3-9.el9.remi remi 136 k
gdk-pixbuf2 x86_64 2.42.6-4.el9_4 appstream 466 k
highway x86_64 1.2.0-2.el9 epel 35 k
jbigkit-libs x86_64 2.1-23.el9 appstream 52 k
libX11 x86_64 1.7.0-9.el9 appstream 645 k
libX11-common noarch 1.7.0-9.el9 appstream 151 k
libXau x86_64 1.0.9-8.el9 appstream 30 k
libXpm x86_64 3.5.13-10.el9 appstream 57 k
libaom x86_64 3.12.0-1.el9 epel 1.8 M
libavif x86_64 0.11.1-5.el9 epel 80 k
libdav1d x86_64 1.5.1-1.el9 epel 611 k
libicu74 x86_64 74.2-1.el9.remi remi 10 M
libimagequant x86_64 2.17.0-1.el9 epel 62 k
libjpeg-turbo x86_64 2.0.90-7.el9 appstream 174 k
libjxl x86_64 0.7.0-1.el9 epel 957 k
libraqm x86_64 0.8.0-1.el9 epel 19 k
libtiff x86_64 4.4.0-13.el9 appstream 197 k
libvmaf x86_64 2.3.0-2.el9 epel 177 k
libwebp x86_64 1.2.0-8.el9_3 appstream 276 k
libxcb x86_64 1.13.1-9.el9 appstream 225 k
php-gd x86_64 8.4.5-1.el9.remi remi-modular 52 k
php-intl x86_64 8.4.5-1.el9.remi remi-modular 187 k
php-mysqlnd x86_64 8.4.5-1.el9.remi remi-modular 152 k
php-pecl-zip x86_64 1.22.5-1.el9.remi.8.4 remi-modular 60 k
php-process x86_64 8.4.5-1.el9.remi remi-modular 49 k
rav1e-libs x86_64 0.7.1-3.el9 epel 1.0 M
remi-libzip x86_64 1.11.3-1.el9.remi remi 69 k
shared-mime-info x86_64 2.1-5.el9 baseos 372 k
svt-av1-libs x86_64 0.9.0-1.el9 epel 1.7 M
xml-common noarch 0.6.3-58.el9 appstream 31 k
Installing weak dependencies:
jxl-pixbuf-loader x86_64 0.7.0-1.el9 epel 53 kTransaction Summary
============================================================================
Install 34 Packages
Webブラウザから、http://ドメイン名/phpMyAdmin/が表示できれば設定完了ですが、初期設定では/phpMyAdmin/にはサーバーローカルからのみアクセス可能な状態となっているので、Webブラウザからは表示できません。
/phpMyAdmin/をWebブラウザからアクセスするために追加された定義ファイル"/etc/httpd/conf.d/phpMyAdmin.conf"を編集し、httpdを再起動します。
phpMyAdmin本体は、"/usr/share/phpMyAdmin/" へセットアップされています。このディレクトリを外部よりアクセスできるよう、Requireディレクティブの設定値を"local"から"all granted"(全てのアクセスを許可)に変更します
/etc/httpd/conf.d/phpMyAdmin.conf
(途中略)
<Directory /usr/share/phpMyAdmin/>
AddDefaultCharset UTF-8
#Require local
Require all granted
</Directory>
httpdを再起動します。
$ sudo systemctl restart httpd
Webブラウザから、http://ドメイン名/phpMyAdmin/をアクセスして次を表示すれば確認完了です。Let's Encrypt導入時にHTTPからHTTPSへのリダイレクトが設定されていれば、https://ドメイン名/phpMyAdmin/ でアクセスされるはずです。
先程変更した、Requireディレクティブの設定値を元の"local"に戻し、httpdを再起動します。
phpMyAdminへのアクセスを制限しよう
ベーシック認証および特定リモートホストからのみアクセス可能とするなら、次の<RequireALL>ディレクティブ内のようにアクセスを制限します。httpsを定義するファイルへ記述を追加し、"/etc/httpd/conf.d/phpMyAdmin.conf" は元の"Require local"のままにします。
<VirtualHost *:443>
(中略)
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
<Directory /usr/share/phpMyAdmin>
AddDefaultCharset UTF-8
<RequireALL>
AuthUserFile /home/foo/www/.htpasswd
AuthName "Please user name."
AuthType Basic
Require valid-user
<RequireAny>
Require host リモートホスト名 (ISPの(.)ピリオドを先頭としたホスト名の固定部分)
Require host リモートホスト名2
</RequireAny>
</RequireALL>
</Directory>
(中略)
</VirtualHost>
複数のISPからのアクセスを許可する場合は、<RequireAny>ディレクティブブロック内に列挙します。
Require ip とすれば、特定IPアドレスや範囲を指定できますが、動的IPアドレスが配布されるISPではホスト名指定が現実的かと思います。
- AlmaLinux9をさくらのVPSでインストールしよう
- AlmaLinux9を初期セットアップしよう
- AlmaLinux9へWebサーバー(Apache)をインストールしよう
- AlmaLinux9へPHP(8.4)をインストールしよう
- AlmaLinux9へTLS証明書(Let's Encrypt)を導入しよう
- ALmaLinux9へMariaDBをインストールしよう(10.5 => 10.11)
- AlmaLinux9へメールサーバー(Postfix/Dovecot)をインストールしよう
- AlmaLinux9へDKIM、DMARCを設定しよう
フォローしませんか?
コメント