MariaDB upgrade to 11.8(LTS)

当方のデータベースサーバーをMariaDB 10.5からMariaDB 11.8(LTS)へアップグレードしました。

Caution!!

  • 本記事はLinux初心者の経験談です。
  • DBのアップグレードは必ずバックアップの上、作業しましょう。たとえデータを失われても当サイトは一切の責任を負いません。

Summary

  • 作業前のDBはMariaDB 10.5.27でした(10.5のLatest Versionは10.5.29)
  • MariaDB 10.5 (LTS)は2025年6月にCommunity EOL に達しました
  • ただし、Almalinux 9のApp StreamによってインストールするMariaDB 10.5のEOLはAlmalinux 9のEOLにあたる2032年6月です
  • 2025年10月14日にリリースされたJoomla! 6のDB要件はMariaDBの場合次のとおりです
  • 当サーバーにインストールされているApp StreamによるMariaDB 10.5は、まだまだアップデートを享受できるのですが、Joomla!のSupportedが10.6で、Minimumが10.4というのは、どんな影響がでるのでしょうか
  • しかし、LTSもリリースされていないMariaDB 12は、いくらRecommendedとはいえ、さすがに躊躇してしまいます
  • 結局、いろいろと浅い考えを巡らせた結果、MariaDBオフィシャルより現時点(2025年10月)で最新LTSのMariaDB 11.8へアップグレードすることとしました
    • これが、後々後悔となりますが(記事後半を参照ください)…すべては経験です
    • なお、MariaDB 11.8のCommunity EOLは2028年6月4日です
      • AlmaLinux 9 App Streamの2023年6月より早く到達することになります

Reference

Steps

  1. データバックアップ
  2. MariaDB 11.8 (LTS)用リポジトリ作成
  3. mysqld停止
  4. MaliaDB 10.5の削除
  5. MariaDB 11.8 のインストール
  6. データアップグレード
  7. mysqd起動

Backup of Database

  • MariaDBのバックアップには2つ手段があり、今回は下記Aを選択しました
    1. mariadb-dump
    2. mariadb-backup
  • 念を入れて、Akeeba Backup for Joomla!によるバックアップも実施しております

Bakupu by mariadb-dump (mysqldump)

# DB バックアップ
$ sudo mysqldump --all-databases -u hogehoge -p > /tmp/all-database-backup_20251020.sql

Modify the repository configuration

Copy Repository List from Official Site

  1. ディストリビューションとバージョンを選択します
    2025 10 25 07 33 09 01
  2. リポジトリリスト右上のCopyボタンをクリックしてコピーします
    2025 10 25 07 33 09 02

Create MariaDB 11.8 Repository List

  • 上記でコピーしたリポジトリリストを使ってMariaDB 11.8(LTS)用リポジトリ作成を作成します
# MariaDB 11.8(LTS)用リポジトリ作成
$ sudo nano /etc/yum.repos.d/MariaDB.repo
 1 # MariaDB 11.8 RedHatEnterpriseLinux repository list - created 2025-10-18 23:19 UTC
 2 # https://mariadb.org/download/
 3 [mariadb]
 4 name = MariaDB
 5 # rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
 6 # baseurl = https://rpm.mariadb.org/11.8/rhel/$releasever/$basearch
 7 baseurl = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/11.8/rhel/$releasever/$basearch
 8 # gpgkey = https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
 9 gpgkey = https://ftp.yz.yamagata-u.ac.jp/pub/dbms/mariadb/yum/RPM-GPG-KEY-MariaDB
10 gpgcheck = 1

# MariaDB.repo SELinuxコンテキスト確認
$ ls -laZ /etc/yum.repos.d/ | grep MariaDB
-rw-r--r--.   1 root root unconfined_u:object_r:system_conf_t:s0  580 Oct 19 08:24 MariaDB.repo

# MariaDB.repo SELinuxコンテキスト修正
$ sudo chcon -u system_u /etc/yum.repos.d/MariaDB.repo 

# MariaDB.repo SELinuxコンテキスト確認
$ ls -laZ /etc/yum.repos.d/ | grep MariaDB
-rw-r--r--.   1 root root system_u:object_r:system_conf_t:s0  580 Oct 19 08:24 MariaDB.repo

Stop MariaDB

  • MariaDBを停止します
# MariaDB 停止
$ sudo systemctl stop mariadb

# MariaDB 停止状態確認
$ sudo systemctl status mariadb
○ mariadb.service - MariaDB 10.5 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: disabled)
     Active: inactive (dead) since Mon 2025-10-20 08:41:44 JST; 30s ago
   Duration: 4month 2d 20h 44min 51.575s
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 903 ExecStart=/usr/libexec/mariadbd --basedir=/usr $MYSQLD_OPTS $_WSREP_NEW_CLUSTER (code=exited, status=0/SUCCESS)
   Main PID: 903 (code=exited, status=0/SUCCESS)
     Status: "MariaDB server is down"
        CPU: 1h 18min 18.403s

Oct 20 08:41:41 x210-131-209-119 systemd[1]: Stopping MariaDB 10.5 database server...
Oct 20 08:41:44 x210-131-209-119 systemd[1]: mariadb.service: Deactivated successfully.
Oct 20 08:41:44 x210-131-209-119 systemd[1]: Stopped MariaDB 10.5 database server.
Oct 20 08:41:44 x210-131-209-119 systemd[1]: mariadb.service: Consumed 1h 18min 18.403s CPU time.

Remove MariaDB 10.5

  • MariaDB 10.5を削除します
# MariaDB 削除
$ sudo dnf remove mariadb-server -y
Dependencies resolved.
======================================================================================================================================================
 Package                                         Architecture              Version                                Repository                     Size
======================================================================================================================================================
Removing:
 mariadb-server                                  x86_64                    3:10.5.27-1.el9_5                      @appstream                     63 M
Removing unused dependencies:
 libaio                                          x86_64                    0.3.111-13.el9                         @baseos                        58 k
 mariadb                                         x86_64                    3:10.5.27-1.el9_5                      @appstream                     18 M
 mariadb-backup                                  x86_64                    3:10.5.27-1.el9_5                      @appstream                     24 M
 mariadb-common                                  x86_64                    3:10.5.27-1.el9_5                      @appstream                    179 k
 mariadb-connector-c                             x86_64                    3.2.6-1.el9_0                          @appstream                    540 k
 mariadb-connector-c-config                      noarch                    3.2.6-1.el9_0                          @appstream                    497  
 mariadb-errmsg                                  x86_64                    3:10.5.27-1.el9_5                      @appstream                    2.6 M
 mariadb-gssapi-server                           x86_64                    3:10.5.27-1.el9_5                      @appstream                     20 k
 mariadb-server-utils                            x86_64                    3:10.5.27-1.el9_5                      @appstream                    801 k
 mysql-selinux                                   noarch                    1.0.13-1.el9_5                         @appstream                     50 k
 perl-DBD-MariaDB                                x86_64                    1.21-16.el9_0                          @appstream                    383 k
 perl-DBI                                        x86_64                    1.643-9.el9                            @appstream                    1.9 M
 perl-DynaLoader                                 x86_64                    1.47-481.el9                           @appstream                     32 k
 perl-File-Copy                                  noarch                    2.34-481.el9                           @appstream                     21 k
 perl-Math-BigInt                                noarch                    1:1.9998.18-460.el9                    @appstream                    709 k
 perl-Math-Complex                               noarch                    1.59-481.el9                           @appstream                     86 k
 perl-Sys-Hostname                               x86_64                    1.23-481.el9                           @appstream                     21 k
 policycoreutils-python-utils                    noarch                    3.6-2.1.el9                            @appstream                    117 k

Transaction Summary
======================================================================================================================================================
Remove  19 Packages

Freed space: 113 M
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                              1/1 
  Erasing          : mariadb-gssapi-server-3:10.5.27-1.el9_5.x86_64                                                                              1/19 
  Erasing          : mariadb-backup-3:10.5.27-1.el9_5.x86_64                                                                                     2/19 
  Running scriptlet: mariadb-server-3:10.5.27-1.el9_5.x86_64                                                                                     3/19 
Removed "/etc/systemd/system/multi-user.target.wants/mariadb.service".
Removed "/etc/systemd/system/mysql.service".
Removed "/etc/systemd/system/mysqld.service".

  Erasing          : mariadb-server-3:10.5.27-1.el9_5.x86_64                                                                                     3/19 
  Running scriptlet: mariadb-server-3:10.5.27-1.el9_5.x86_64                                                                                     3/19 
  Erasing          : mariadb-3:10.5.27-1.el9_5.x86_64                                                                                            4/19 
  Erasing          : mariadb-server-utils-3:10.5.27-1.el9_5.x86_64                                                                               5/19 
  Erasing          : mysql-selinux-1.0.13-1.el9_5.noarch                                                                                         6/19 
  Running scriptlet: mysql-selinux-1.0.13-1.el9_5.noarch                                                                                         6/19 
  Erasing          : mariadb-errmsg-3:10.5.27-1.el9_5.x86_64                                                                                     7/19 
  Erasing          : mariadb-common-3:10.5.27-1.el9_5.x86_64                                                                                     8/19 
  Erasing          : policycoreutils-python-utils-3.6-2.1.el9.noarch                                                                             9/19 
  Erasing          : perl-File-Copy-2.34-481.el9.noarch                                                                                         10/19 
  Erasing          : perl-DBD-MariaDB-1.21-16.el9_0.x86_64                                                                                      11/19 
  Erasing          : perl-DBI-1.643-9.el9.x86_64                                                                                                12/19 
  Erasing          : perl-Math-BigInt-1:1.9998.18-460.el9.noarch                                                                                13/19 
  Erasing          : mariadb-connector-c-3.2.6-1.el9_0.x86_64                                                                                   14/19 
  Erasing          : mariadb-connector-c-config-3.2.6-1.el9_0.noarch                                                                            15/19 
  Erasing          : perl-Math-Complex-1.59-481.el9.noarch                                                                                      16/19 
  Erasing          : perl-DynaLoader-1.47-481.el9.x86_64                                                                                        17/19 
  Erasing          : perl-Sys-Hostname-1.23-481.el9.x86_64                                                                                      18/19 
  Erasing          : libaio-0.3.111-13.el9.x86_64                                                                                               19/19 
  Running scriptlet: libaio-0.3.111-13.el9.x86_64                                                                                               19/19 
  Verifying        : libaio-0.3.111-13.el9.x86_64                                                                                                1/19 
  Verifying        : mariadb-3:10.5.27-1.el9_5.x86_64                                                                                            2/19 
  Verifying        : mariadb-backup-3:10.5.27-1.el9_5.x86_64                                                                                     3/19 
  Verifying        : mariadb-common-3:10.5.27-1.el9_5.x86_64                                                                                     4/19 
  Verifying        : mariadb-connector-c-3.2.6-1.el9_0.x86_64                                                                                    5/19 
  Verifying        : mariadb-connector-c-config-3.2.6-1.el9_0.noarch                                                                             6/19 
  Verifying        : mariadb-errmsg-3:10.5.27-1.el9_5.x86_64                                                                                     7/19 
  Verifying        : mariadb-gssapi-server-3:10.5.27-1.el9_5.x86_64                                                                              8/19 
  Verifying        : mariadb-server-3:10.5.27-1.el9_5.x86_64                                                                                     9/19 
  Verifying        : mariadb-server-utils-3:10.5.27-1.el9_5.x86_64                                                                              10/19 
  Verifying        : mysql-selinux-1.0.13-1.el9_5.noarch                                                                                        11/19 
  Verifying        : perl-DBD-MariaDB-1.21-16.el9_0.x86_64                                                                                      12/19 
  Verifying        : perl-DBI-1.643-9.el9.x86_64                                                                                                13/19 
  Verifying        : perl-DynaLoader-1.47-481.el9.x86_64                                                                                        14/19 
  Verifying        : perl-File-Copy-2.34-481.el9.noarch                                                                                         15/19 
  Verifying        : perl-Math-BigInt-1:1.9998.18-460.el9.noarch                                                                                16/19 
  Verifying        : perl-Math-Complex-1.59-481.el9.noarch                                                                                      17/19 
  Verifying        : perl-Sys-Hostname-1.23-481.el9.x86_64                                                                                      18/19 
  Verifying        : policycoreutils-python-utils-3.6-2.1.el9.noarch                                                                            19/19 

Removed:
  libaio-0.3.111-13.el9.x86_64                      mariadb-3:10.5.27-1.el9_5.x86_64                 mariadb-backup-3:10.5.27-1.el9_5.x86_64          
  mariadb-common-3:10.5.27-1.el9_5.x86_64           mariadb-connector-c-3.2.6-1.el9_0.x86_64         mariadb-connector-c-config-3.2.6-1.el9_0.noarch  
  mariadb-errmsg-3:10.5.27-1.el9_5.x86_64           mariadb-gssapi-server-3:10.5.27-1.el9_5.x86_64   mariadb-server-3:10.5.27-1.el9_5.x86_64          
  mariadb-server-utils-3:10.5.27-1.el9_5.x86_64     mysql-selinux-1.0.13-1.el9_5.noarch              perl-DBD-MariaDB-1.21-16.el9_0.x86_64            
  perl-DBI-1.643-9.el9.x86_64                       perl-DynaLoader-1.47-481.el9.x86_64              perl-File-Copy-2.34-481.el9.noarch               
  perl-Math-BigInt-1:1.9998.18-460.el9.noarch       perl-Math-Complex-1.59-481.el9.noarch            perl-Sys-Hostname-1.23-481.el9.x86_64            
  policycoreutils-python-utils-3.6-2.1.el9.noarch  

Complete!

Install MariaDB 11.8 (LTS)

  • MariaDB 11.8 (LTS)をインストールします
  • バージョンは11.8.3です
# MariaDB インストール
$ sudo dnf install MariaDB-server MariaDB-client
Last metadata expiration check: 0:53:27 ago on Mon 20 Oct 2025 07:57:15 AM JST.
Dependencies resolved.
======================================================================================================================================================
 Package                                    Architecture                Version                                  Repository                      Size
======================================================================================================================================================
Installing:
 MariaDB-client                             x86_64                      11.8.3-1.el9                             mariadb                        9.6 M
 MariaDB-server                             x86_64                      11.8.3-1.el9                             mariadb                         18 M
Installing dependencies:
 MariaDB-common                             x86_64                      11.8.3-1.el9                             mariadb                         92 k
 MariaDB-shared                             x86_64                      11.8.3-1.el9                             mariadb                        130 k
 boost-program-options                      x86_64                      1.75.0-10.el9                            appstream                      104 k
 galera-4                                   x86_64                      26.4.23-1.el9                            mariadb                        1.2 M
 libaio                                     x86_64                      0.3.111-13.el9                           baseos                          23 k
 perl-DBI                                   x86_64                      1.643-9.el9                              appstream                      700 k
 perl-DynaLoader                            x86_64                      1.47-481.1.el9_6                         appstream                       24 k
 perl-File-Copy                             noarch                      2.34-481.1.el9_6                         appstream                       19 k
 perl-Math-BigInt                           noarch                      1:1.9998.18-460.el9                      appstream                      188 k
 perl-Math-Complex                          noarch                      1.59-481.1.el9_6                         appstream                       45 k
 perl-Sys-Hostname                          x86_64                      1.23-481.1.el9_6                         appstream                       15 k
Installing weak dependencies:
 MariaDB-client-compat                      noarch                      11.8.3-1.el9                             mariadb                         11 k
 MariaDB-server-compat                      noarch                      11.8.3-1.el9                             mariadb                        9.0 k
 lsof                                       x86_64                      4.94.0-3.el9                             baseos                         238 k
 pv                                         x86_64                      1.6.20-1.el9                             epel                            65 k
 socat                                      x86_64                      1.7.4.1-6.el9_6.1                        appstream                      299 k

Transaction Summary
======================================================================================================================================================
Install  18 Packages

Total download size: 31 M
Installed size: 242 M
Is this ok [y/N]: y
Downloading Packages:
(1/18): MariaDB-client-compat-11.8.3-1.el9.noarch.rpm                                                                  47 kB/s |  11 kB     00:00    
(2/18): MariaDB-common-11.8.3-1.el9.x86_64.rpm                                                                        324 kB/s |  92 kB     00:00    
(3/18): MariaDB-server-compat-11.8.3-1.el9.noarch.rpm                                                                  70 kB/s | 9.0 kB     00:00    
(4/18): MariaDB-shared-11.8.3-1.el9.x86_64.rpm                                                                        960 kB/s | 130 kB     00:00    
(5/18): MariaDB-client-11.8.3-1.el9.x86_64.rpm                                                                        7.5 MB/s | 9.6 MB     00:01    
(6/18): galera-4-26.4.23-1.el9.x86_64.rpm                                                                             1.7 MB/s | 1.2 MB     00:00    
(7/18): MariaDB-server-11.8.3-1.el9.x86_64.rpm                                                                         16 MB/s |  18 MB     00:01    
(8/18): boost-program-options-1.75.0-10.el9.x86_64.rpm                                                                401 kB/s | 104 kB     00:00    
(9/18): perl-File-Copy-2.34-481.1.el9_6.noarch.rpm                                                                    761 kB/s |  19 kB     00:00    
(10/18): perl-DBI-1.643-9.el9.x86_64.rpm                                                                              2.8 MB/s | 700 kB     00:00    
(11/18): perl-Math-BigInt-1.9998.18-460.el9.noarch.rpm                                                                3.9 MB/s | 188 kB     00:00    
(12/18): perl-DynaLoader-1.47-481.1.el9_6.x86_64.rpm                                                                  314 kB/s |  24 kB     00:00    
(13/18): perl-Math-Complex-1.59-481.1.el9_6.noarch.rpm                                                                1.8 MB/s |  45 kB     00:00    
(14/18): perl-Sys-Hostname-1.23-481.1.el9_6.x86_64.rpm                                                                654 kB/s |  15 kB     00:00    
(15/18): libaio-0.3.111-13.el9.x86_64.rpm                                                                             969 kB/s |  23 kB     00:00    
(16/18): lsof-4.94.0-3.el9.x86_64.rpm                                                                                 9.1 MB/s | 238 kB     00:00    
(17/18): socat-1.7.4.1-6.el9_6.1.x86_64.rpm                                                                           2.8 MB/s | 299 kB     00:00    
(18/18): pv-1.6.20-1.el9.x86_64.rpm                                                                                   810 kB/s |  65 kB     00:00    
------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                 8.0 MB/s |  31 MB     00:03     
MariaDB                                                                                                                95 kB/s | 6.4 kB     00:00    
Importing GPG key 0xC74CD1D8:
 Userid     : "MariaDB Signing Key "
 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
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                                                                                              1/1 
  Installing       : MariaDB-shared-11.8.3-1.el9.x86_64                                                                                          1/18 
  Running scriptlet: MariaDB-shared-11.8.3-1.el9.x86_64                                                                                          1/18 
  Installing       : MariaDB-common-11.8.3-1.el9.x86_64                                                                                          2/18 
  Installing       : libaio-0.3.111-13.el9.x86_64                                                                                                3/18 
  Installing       : pv-1.6.20-1.el9.x86_64                                                                                                      4/18 
  Installing       : lsof-4.94.0-3.el9.x86_64                                                                                                    5/18 
  Installing       : socat-1.7.4.1-6.el9_6.1.x86_64                                                                                              6/18 
  Installing       : perl-Sys-Hostname-1.23-481.1.el9_6.x86_64                                                                                   7/18 
  Installing       : perl-Math-Complex-1.59-481.1.el9_6.noarch                                                                                   8/18 
  Installing       : perl-Math-BigInt-1:1.9998.18-460.el9.noarch                                                                                 9/18 
  Installing       : perl-File-Copy-2.34-481.1.el9_6.noarch                                                                                     10/18 
  Installing       : perl-DynaLoader-1.47-481.1.el9_6.x86_64                                                                                    11/18 
  Installing       : perl-DBI-1.643-9.el9.x86_64                                                                                                12/18 
  Installing       : MariaDB-client-compat-11.8.3-1.el9.noarch                                                                                  13/18 
  Installing       : MariaDB-client-11.8.3-1.el9.x86_64                                                                                         14/18 
  Installing       : boost-program-options-1.75.0-10.el9.x86_64                                                                                 15/18 
  Running scriptlet: galera-4-26.4.23-1.el9.x86_64                                                                                              16/18 
  Installing       : galera-4-26.4.23-1.el9.x86_64                                                                                              16/18 
  Running scriptlet: galera-4-26.4.23-1.el9.x86_64                                                                                              16/18 
  Installing       : MariaDB-server-compat-11.8.3-1.el9.noarch                                                                                  17/18 
  Running scriptlet: MariaDB-server-11.8.3-1.el9.x86_64                                                                                         18/18 
usermod: no changes

  Installing       : MariaDB-server-11.8.3-1.el9.x86_64                                                                                         18/18 
  Running scriptlet: MariaDB-server-11.8.3-1.el9.x86_64                                                                                         18/18 
  Verifying        : MariaDB-client-11.8.3-1.el9.x86_64                                                                                          1/18 
  Verifying        : MariaDB-client-compat-11.8.3-1.el9.noarch                                                                                   2/18 
  Verifying        : MariaDB-common-11.8.3-1.el9.x86_64                                                                                          3/18 
  Verifying        : MariaDB-server-11.8.3-1.el9.x86_64                                                                                          4/18 
  Verifying        : MariaDB-server-compat-11.8.3-1.el9.noarch                                                                                   5/18 
  Verifying        : MariaDB-shared-11.8.3-1.el9.x86_64                                                                                          6/18 
  Verifying        : galera-4-26.4.23-1.el9.x86_64                                                                                               7/18 
  Verifying        : boost-program-options-1.75.0-10.el9.x86_64                                                                                  8/18 
  Verifying        : perl-DBI-1.643-9.el9.x86_64                                                                                                 9/18 
  Verifying        : perl-DynaLoader-1.47-481.1.el9_6.x86_64                                                                                    10/18 
  Verifying        : perl-File-Copy-2.34-481.1.el9_6.noarch                                                                                     11/18 
  Verifying        : perl-Math-BigInt-1:1.9998.18-460.el9.noarch                                                                                12/18 
  Verifying        : perl-Math-Complex-1.59-481.1.el9_6.noarch                                                                                  13/18 
  Verifying        : perl-Sys-Hostname-1.23-481.1.el9_6.x86_64                                                                                  14/18 
  Verifying        : socat-1.7.4.1-6.el9_6.1.x86_64                                                                                             15/18 
  Verifying        : libaio-0.3.111-13.el9.x86_64                                                                                               16/18 
  Verifying        : lsof-4.94.0-3.el9.x86_64                                                                                                   17/18 
  Verifying        : pv-1.6.20-1.el9.x86_64                                                                                                     18/18 

Installed:
  MariaDB-client-11.8.3-1.el9.x86_64               MariaDB-client-compat-11.8.3-1.el9.noarch         MariaDB-common-11.8.3-1.el9.x86_64             
  MariaDB-server-11.8.3-1.el9.x86_64               MariaDB-server-compat-11.8.3-1.el9.noarch         MariaDB-shared-11.8.3-1.el9.x86_64             
  boost-program-options-1.75.0-10.el9.x86_64       galera-4-26.4.23-1.el9.x86_64                     libaio-0.3.111-13.el9.x86_64                   
  lsof-4.94.0-3.el9.x86_64                         perl-DBI-1.643-9.el9.x86_64                       perl-DynaLoader-1.47-481.1.el9_6.x86_64        
  perl-File-Copy-2.34-481.1.el9_6.noarch           perl-Math-BigInt-1:1.9998.18-460.el9.noarch       perl-Math-Complex-1.59-481.1.el9_6.noarch      
  perl-Sys-Hostname-1.23-481.1.el9_6.x86_64        pv-1.6.20-1.el9.x86_64                            socat-1.7.4.1-6.el9_6.1.x86_64                 

Complete!

Upgrade Database

  • データベースをアップグレードします
# データベースアップグレード
$ sudo mariadb-upgrade -u hogehoge -p
Phase 1/8: Checking and upgrading mysql database
Processing databases
mysql
mysql.column_stats                                 OK
mysql.columns_priv                                 OK
mysql.db                                           OK
mysql.event                                        OK
mysql.func                                         OK
mysql.global_priv                                  OK
mysql.gtid_slave_pos                               OK
mysql.help_category                                OK
mysql.help_keyword                                 OK
mysql.help_relation                                OK
mysql.help_topic                                   OK
mysql.index_stats                                  OK
mysql.innodb_index_stats                           OK
mysql.innodb_table_stats                           OK
mysql.plugin                                       OK
mysql.proc                                         OK
mysql.procs_priv                                   OK
mysql.proxies_priv                                 OK
mysql.roles_mapping                                OK
mysql.servers                                      OK
mysql.table_stats                                  OK
mysql.tables_priv                                  OK
mysql.time_zone                                    OK
mysql.time_zone_leap_second                        OK
mysql.time_zone_name                               OK
mysql.time_zone_transition                         OK
mysql.time_zone_transition_type                    OK
mysql.transaction_registry                         OK
Phase 2/8: Installing used storage engines... Skipped
Phase 3/8: Running 'mysql_fix_privilege_tables'
Phase 4/8: Fixing views
mysql.user                                         OK
sys.host_summary                                   OK
sys.host_summary_by_file_io                        OK
sys.host_summary_by_file_io_type                   OK
sys.host_summary_by_stages                         OK
sys.host_summary_by_statement_latency              OK
sys.host_summary_by_statement_type                 OK
sys.innodb_buffer_stats_by_schema                  OK
sys.innodb_buffer_stats_by_table                   OK
sys.innodb_lock_waits                              OK
sys.io_by_thread_by_latency                        OK
sys.io_global_by_file_by_bytes                     OK
sys.io_global_by_file_by_latency                   OK
sys.io_global_by_wait_by_bytes                     OK
sys.io_global_by_wait_by_latency                   OK
sys.latest_file_io                                 OK
sys.memory_by_host_by_current_bytes                OK
sys.memory_by_thread_by_current_bytes              OK
sys.memory_by_user_by_current_bytes                OK
sys.memory_global_by_current_bytes                 OK
sys.memory_global_total                            OK
sys.metrics                                        OK
sys.privileges_by_table_by_level                   OK
sys.processlist                                    OK
sys.ps_check_lost_instrumentation                  OK
sys.schema_auto_increment_columns                  OK
sys.schema_index_statistics                        OK
sys.schema_object_overview                         OK
sys.schema_redundant_indexes                       OK
sys.schema_table_lock_waits                        OK
sys.schema_table_statistics                        OK
sys.schema_table_statistics_with_buffer            OK
sys.schema_tables_with_full_table_scans            OK
sys.schema_unused_indexes                          OK
sys.session                                        OK
sys.session_ssl_status                             OK
sys.statement_analysis                             OK
sys.statements_with_errors_or_warnings             OK
sys.statements_with_full_table_scans               OK
sys.statements_with_runtimes_in_95th_percentile    OK
sys.statements_with_sorting                        OK
sys.statements_with_temp_tables                    OK
sys.user_summary                                   OK
sys.user_summary_by_file_io                        OK
sys.user_summary_by_file_io_type                   OK
sys.user_summary_by_stages                         OK
sys.user_summary_by_statement_latency              OK
sys.user_summary_by_statement_type                 OK
sys.version                                        OK
sys.wait_classes_global_by_avg_latency             OK
sys.wait_classes_global_by_latency                 OK
sys.waits_by_host_by_latency                       OK
sys.waits_by_user_by_latency                       OK
sys.waits_global_by_latency                        OK
sys.x$host_summary                                 OK
sys.x$host_summary_by_file_io                      OK
sys.x$host_summary_by_file_io_type                 OK
sys.x$host_summary_by_stages                       OK
sys.x$host_summary_by_statement_latency            OK
sys.x$host_summary_by_statement_type               OK
sys.x$innodb_buffer_stats_by_schema                OK
sys.x$innodb_buffer_stats_by_table                 OK
sys.x$innodb_lock_waits                            OK
sys.x$io_by_thread_by_latency                      OK
sys.x$io_global_by_file_by_bytes                   OK
sys.x$io_global_by_file_by_latency                 OK
sys.x$io_global_by_wait_by_bytes                   OK
sys.x$io_global_by_wait_by_latency                 OK
sys.x$latest_file_io                               OK
sys.x$memory_by_host_by_current_bytes              OK
sys.x$memory_by_thread_by_current_bytes            OK
sys.x$memory_by_user_by_current_bytes              OK
sys.x$memory_global_by_current_bytes               OK
sys.x$memory_global_total                          OK
sys.x$processlist                                  OK
sys.x$ps_digest_95th_percentile_by_avg_us          OK
sys.x$ps_digest_avg_latency_distribution           OK
sys.x$ps_schema_table_statistics_io                OK
sys.x$schema_flattened_keys                        OK
sys.x$schema_index_statistics                      OK
sys.x$schema_table_lock_waits                      OK
sys.x$schema_table_statistics                      OK
sys.x$schema_table_statistics_with_buffer          OK
sys.x$schema_tables_with_full_table_scans          OK
sys.x$session                                      OK
sys.x$statement_analysis                           OK
sys.x$statements_with_errors_or_warnings           OK
sys.x$statements_with_full_table_scans             OK
sys.x$statements_with_runtimes_in_95th_percentile  OK
sys.x$statements_with_sorting                      OK
sys.x$statements_with_temp_tables                  OK
sys.x$user_summary                                 OK
sys.x$user_summary_by_file_io                      OK
sys.x$user_summary_by_file_io_type                 OK
sys.x$user_summary_by_stages                       OK
sys.x$user_summary_by_statement_latency            OK
sys.x$user_summary_by_statement_type               OK
sys.x$wait_classes_global_by_avg_latency           OK
sys.x$wait_classes_global_by_latency               OK
sys.x$waits_by_host_by_latency                     OK
sys.x$waits_by_user_by_latency                     OK
sys.x$waits_global_by_latency                      OK
Phase 5/8: Fixing table and database names
Phase 6/8: Checking and upgrading tables
Processing databases
information_schema
# 以降、Joomla!のデータベーステーブルのチェックとアップグレードが進み、すべてOKと表示されます
performance_schema
sys
sys.sys_config                                     OK
Phase 7/8: uninstalling plugins
Phase 8/8: Running 'FLUSH PRIVILEGES'
OK

Start MariaDB

  • MariaDBを起動します
  • 起動状態を確認します
    • 問題なくMariaDB 11.8が動作しているようです
    • [Note] Plugin 'FEEDBACK' is disabled.
    • [Note] Plugin 'wsrep-provider' is disabled.
  • これで一連の作業は完了です
# MariaDB 起動・自動起動設定
$ sudo systemctl enable --now mariadb
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

# MariaDB 起動状態確認
$ sudo systemctl status mariadb
]$ sudo systemctl status mariadb
● mariadb.service - MariaDB 11.8.3 database server
     Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; preset: disabled)
    Drop-In: /etc/systemd/system/mariadb.service.d
             └─migrated-from-my.cnf-settings.conf
     Active: active (running) since Mon 2025-10-20 10:53:26 JST; 8s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
    Process: 1501997 ExecStartPre=/bin/sh -c [ ! -e /usr/bin/galera_recovery ] && VAR= ||   VAR=`/usr/bin/galera_recovery`; [ $? -eq 0 ]   && echo _WSREP_STA>
    Process: 1502020 ExecStartPost=/bin/rm -f /var/lib/mysql/wsrep-start-position (code=exited, status=0/SUCCESS)
   Main PID: 1502008 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 12 (limit: 13398)
     Memory: 145.3M
        CPU: 2.278s
     CGroup: /system.slice/mariadb.service
             └─1502008 /usr/sbin/mariadbd

Oct 20 10:53:24 x210-131-209-119 mariadbd[1502008]: 2025-10-20 10:53:24 0 [Note] InnoDB: Loading buffer pool(s) from /var/lib/mysql/ib_buffer_pool
Oct 20 10:53:24 x210-131-209-119 mariadbd[1502008]: 2025-10-20 10:53:24 0 [Note] Plugin 'FEEDBACK' is disabled.
Oct 20 10:53:24 x210-131-209-119 mariadbd[1502008]: 2025-10-20 10:53:24 0 [Note] Plugin 'wsrep-provider' is disabled.
Oct 20 10:53:25 x210-131-209-119 mariadbd[1502008]: 2025-10-20 10:53:25 0 [Note] InnoDB: Buffer pool(s) load completed at 251020 10:53:25
Oct 20 10:53:26 x210-131-209-119 mariadbd[1502008]: 2025-10-20 10:53:26 0 [Note] Server socket created on IP: '0.0.0.0', port: '3306'.
Oct 20 10:53:26 x210-131-209-119 mariadbd[1502008]: 2025-10-20 10:53:26 0 [Note] Server socket created on IP: '::', port: '3306'.
Oct 20 10:53:26 x210-131-209-119 mariadbd[1502008]: 2025-10-20 10:53:26 0 [Note] mariadbd: Event Scheduler: Loaded 0 events
Oct 20 10:53:26 x210-131-209-119 mariadbd[1502008]: 2025-10-20 10:53:26 0 [Note] /usr/sbin/mariadbd: ready for connections.
Oct 20 10:53:26 x210-131-209-119 mariadbd[1502008]: Version: '11.8.3-MariaDB'  socket: '/var/lib/mysql/mysql.sock'  port: 3306  MariaDB Server
Oct 20 10:53:26 x210-131-209-119 systemd[1]: Started MariaDB 11.8.3 database server.

SELinux denies connection to DB

  • 作業を終え、MariaDBのアップグレードは完了しましたが、Joomla!から500 Error(サーバー側の内部エラー)の通知があり正常表示されません
  • 原因は、SELinuxによりphp-fpmのmysql.sockへの接続を拒否されていることにありました
  • 早期に問題個所の特定をすることができましたが、解決まで時間を要しました

Check with SELinux Permissive mode

  • シェルコマンドmysqlにて、データベースへのアクセスに問題ないことを確認できましたので、SELinuxによる否認であろうと推察しました
  • Permissiveモードに変更して検証します
# Permissiveモードへ変更
$ sudo setenforce 0

# モードを確認
$ sudo getenforce
Permissive
  • 500エラーは解消し、サイトを確認することができました
  • 記事の更新も問題ありません
  • サイトが表示されない原因は、SELinuxの設定によるものと判断できました
  • Enforcingモードに戻します
# Enforcingモードへ変更
$ sudo setenforce 1

# モードを確認
$ sudo getenforce
Enforcing

Check SELinux audit log

  • SELinuxの監査ログを確認します
$ sudo ausearch -m avc -ts recent
----
time->Mon Oct 20 18:55:47 2025
type=PROCTITLE msg=audit(1760954147.328:8224940): proctitle=7068702D66706D3A20706F6F6C20777777
type=SYSCALL msg=audit(1760954147.328:8224940): arch=c000003e syscall=42 success=yes exit=0 a0=6 a1=7ffd08f76ce0 a2=1b a3=555901882c50 items=0 ppid=1292444 pid=1447061 auid=42949672
95 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="php-fpm" exe="/usr/sbin/php-fpm" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1760954147.328:8224940): avc:  denied  { connectto } for  pid=1447061 comm="php-fpm" path="/var/lib/mysql/mysql.sock" scontext=system_u:system_r:httpd_t:s0 tconte
xt=system_u:system_r:unconfined_service_t:s0 tclass=unix_stream_socket permissive=0
----
  • type=AVC以降の情報により、php-fpmがmysql.sockへの接続を拒否されていることが解ります

Check SELinux Context and Boolarn

  • SELinuxのContextとブール値に問題ないかを確認します
Boolarn
  • mysqlとhttpd関連のブール値を確認します
# mysql関連のブール値を確認します
# 今回、特に変更していません
$ sudo getsebool -a | grep mysql
mysql_connect_any --> off
mysql_connect_http --> off
selinuxuser_mysql_connect_enabled --> off

# httpd関連のブール値 onを確認します
$ sudo getsebool -a | grep httpd | grep "> on"
httpd_builtin_scripting --> on
httpd_can_network_connect --> on
httpd_can_sendmail --> on
httpd_enable_cgi --> on
httpd_execmem --> on
httpd_unified --> on

# httpd_can_network_connect_dbはデフォルトでオフです
# MariaDBアップグレード前はオフで問題なかったはずですが、オンに変更しています
# -P: 再起動後も設定を永続化
$ sudo setsebool -P httpd_can_network_connect_db on

# 再度、httpd関連のブール値 onを確認します
$ sudo getsebool -a | grep httpd | grep "> on"
httpd_builtin_scripting --> on
httpd_can_network_connect --> on
httpd_can_network_connect_db --> on
httpd_can_sendmail --> on
httpd_enable_cgi --> on
httpd_execmem --> on
httpd_unified --> on
Context
  • mysql.sockのコンテキストを確認します
# mysql.sockのコンテキストを確認します
$ ls -laZ /var/lib/mysql/ | grep mysql.sock
srwxrwxrwx.  1 mysql mysql system_u:object_r:mysqld_db_t:s0             0 Oct 20 18:53 mysql.sock

# restoreconコマンドにて既定のコンテキストに修正します
$ sudo restorecon -v /var/lib/mysql/mysql.sock 
Relabeled /var/lib/mysql/mysql.sock from system_u:object_r:mysqld_db_t:s0 to system_u:object_r:mysqld_var_run_t:s0

# mysql.sockのコンテキストはmysqld_db_tではなくmysqld_var_run_tのようです
# ただし、mariadbを再起動すると、再作成されるmysql.sockのコンテキストはmysqld_db_tに戻ってしまいます
$ ls -laZ /var/lib/mysql/ | grep mysql.sock
srwxrwxrwx.  1 mysql mysql system_u:object_r:mysqld_var_run_t:s0         0 Oct 20 18:53 mysql.sock

# 念の為、mysqld_var_run_tを確認します
# Socketのパスも問題ないようです
$ sudo semanage fcontext -l | grep mysqld_var_run_t
/var/lib/mysql/mysql\.sock                         socket             system_u:object_r:mysqld_var_run_t:s0 
/var/run/mariadb(/.*)?                             all files          system_u:object_r:mysqld_var_run_t:s0 
/var/run/mysql(/.*)?                               all files          system_u:object_r:mysqld_var_run_t:s0 
/var/run/mysqld(/.*)?                              all files          system_u:object_r:mysqld_var_run_t:s0 

# httpd_tからmysqld_var_run_tへの許可設定を確認します
# 下から2行目、問題ないようです
$ sudo sesearch -A -s httpd_t -t mysqld_var_run_t
allow domain file_type:blk_file map; [ domain_can_mmap_files ]:True
allow domain file_type:chr_file map; [ domain_can_mmap_files ]:True
allow domain file_type:file map; [ domain_can_mmap_files ]:True
allow domain file_type:lnk_file map; [ domain_can_mmap_files ]:True
allow httpd_t file_type:dir { getattr open search };
allow httpd_t file_type:filesystem getattr;
allow httpd_t mysqld_var_run_t:sock_file { append getattr open write };
allow nsswitch_domain pidfile:dir { getattr open search };

Solved by audit2allow

  • Linux初心者のわたくしには、上記までの確認が限界で、SELinuxがどう拒否しているのか、何故、アップグレード後拒否されてしまったのか、理由を確認することが出来ませんでした
  • 最終的に、監査ログから許可設定モジュールを作成するaudit2allowを使用して、php-fpmのmysql.sockへの接続を許可し、今回はとりあえず解決としました
  • 結果から言えば、さっさとaudit2allowに頼っていれば済んだわけですが、設定ミスがないか確認したうえでaudit2allowを使用すべきとされているそうです
  • ただし、監査ログを元に作成されるモジュールのため、ターゲットmysql.sockのコンテキストunconfined_service_tは制限のないドメインであり、これを許可する設定はリスクを抱えた設定といえます
# 監査ログを解析して解決策を提示してもらいます
# -a すべての監査ログを読む
# -w 人間が読むことができる説明を表示する
$ sudo audit2allow -a -w
type=AVC msg=audit(1761109194.805:8289894): avc:  denied  { connectto } for  pid=1532408 comm="php-fpm" path="/var/lib/mysql/mysql.sock" scontext=system_u:system_r:httpd_t:s0 tcontext=system_
u:system_r:unconfined_service_t:s0 tclass=unix_stream_socket permissive=1
        Was caused by:
                Missing type enforcement (TE) allow rule.

                You can use audit2allow to generate a loadable module to allow this access.

# 以下、同じログの繰り返しのため省略しております

# -w オプションなしで実行すると、拒否されたアクセスを許可するType Enforcementルールの一覧が表示されます
$ sudo audit2allow -a


#============= httpd_t ==============
allow httpd_t unconfined_service_t:unix_stream_socket connectto;

#============= init_t ==============
allow init_t mysqld_db_t:file { open read };

# カスタムポリシーモジュール(my_mysql_sockと命名)を作成します
$ sudo audit2allow -a -M my_mysql_sock
[sudo] password for administrator: 
******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i my_mysql_sock.pp

# モジュールをインストールします
$ sudo semodule -i my_mysql_sock.pp

Is this a MariaDB bug?

  • 更に、Web情報をあたっている内に、次のページに出くわしました
  • plesk.com | Database connections initiated using PHP fail when SELinux is enabled on a Plesk for Linux server
  • 上記ページで、次のページを引用し、わたくしが対面しているトラブルと同様のトラブルに対し、MariaDBのバグであると説明しています
  • MariaDB Jira | SElinux incorrect label for server socket
  • 上記ページを確認し、mysql.sockのコンテキストが再起動の度にmysqld_db_tへ戻ってしまう現象がバグであることが理解できました
    • もっとも、mysqld_var_run_tに戻しただけでは、解決しないのですが
  • また、plesk.comが提示している解決方法は残念ながら、当サーバーの環境では効果ありませんでした
  • MariaDB Jiraの報告では、MariaDB 11.8.4で解決とありますが、公式バージョンとしてリリースされていません
  • わたくしのスキルでは、暫定的にaudit2allows作成のモジュールで対処するしかないようです

Reference