yum update を流したら MariaDB が上がって、アプリの SQL 構文エラーが出始めた──」本番環境で MariaDB のバージョンが意図せず上がってしまうと、アプリケーションとの非互換やデータ型の変更によって障害が発生することがある。開発・ステージング・本番の3環境でバージョンを揃えて運用しているシステムでは、このような自動アップグレードは致命的なリスクだ。
この記事では、Linux サーバー上で MariaDB のバージョンを固定する方法を、RHEL/CentOS/Rocky Linux 系(
yum versionlock / dnf versionlock)と Ubuntu/Debian 系(apt-pinning)に分けて、実機コマンド出力つきで解説する。「
yum update や apt upgrade を実行しても MariaDB だけはアップグレードされない」状態を確実に作る設定手順と、バージョンを上げるときのロック解除手順まで網羅する。この記事のポイント
・yum/dnf versionlock add でRHEL系のMariaDBバージョンを固定できる
・Ubuntu/Debianは/etc/apt/preferences.d/にPin設定を書くだけで有効になる
・ロック状態は dnf versionlock list・apt-cache policy で確認する
・更新時はロック解除→バックアップ→更新→再ロックの手順で安全に進める
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜ MariaDB のバージョンを固定する必要があるのか
MariaDB は積極的にマイナーバージョンが出る DBMS であり、デフォルトのリポジトリ設定ではyum update/apt upgrade で自動的に更新される。バージョンアップ自体はセキュリティパッチや性能改善を含む有益な変更だが、以下の状況では「固定したまま動かし続ける」判断が合理的になる。・アプリケーション互換性の保守:既存の ORM やストアドプロシージャが特定バージョン依存の挙動に最適化されている場合
・ステージングと本番の同一環境維持:CI/CD パイプラインでバージョンを環境変数で固定している場合
・大規模移行前の凍結期間:MariaDB 10.11 LTS から 11.4 LTS へ移行する前のテスト期間中
・パッチリリースのみ許容する運用:メジャー/マイナーはスキップし、パッチリリースだけ当てる場合
バージョンロックは「更新をしない」ための手段ではなく、「いつ・何を・どの手順で更新するか」をコントロールするための仕組みだ。
yum versionlock で MariaDB を固定する(RHEL/CentOS/Rocky Linux)
RHEL 8/9 系(Rocky Linux 8/9、AlmaLinux 8/9、CentOS Stream 8/9 を含む)ではdnf versionlock コマンドを使う。プラグインは dnf-plugins-core パッケージに含まれている。RHEL 7 / CentOS 7 では同等機能を yum-plugin-versionlock が提供する。
1. versionlock プラグインをインストールする
まず動作環境と、プラグインが入っているかを確認する。# RHEL 8/9 / Rocky Linux 8/9 での確認 $ cat /etc/os-release | grep -E '^NAME|^VERSION_ID' NAME="Rocky Linux" VERSION_ID="9.4" # プラグインパッケージ確認 $ rpm -q dnf-plugins-core dnf-plugins-core-4.3.0-16.el9.noarch # 未インストールの場合 $ sudo dnf install -y dnf-plugins-core
# RHEL 7 / CentOS 7 $ sudo yum install -y yum-plugin-versionlock
2. MariaDB パッケージをロックする
現在インストールされている MariaDB のバージョンをそのままロックする。dnf versionlock add に続けてパッケージ名を列挙する。rpm コマンドの使い方でインストール済みパッケージの詳細を事前に把握しておくとよい。
# インストール済みバージョンを確認 $ rpm -q mariadb-server mariadb mariadb-common mariadb-server-10.11.8-1.el9.x86_64 mariadb-10.11.8-1.el9.x86_64 mariadb-common-10.11.8-1.el9.x86_64 # 関連3パッケージをまとめてロック $ sudo dnf versionlock add mariadb-server mariadb mariadb-common Adding versionlock on: mariadb-0:10.11.8-1.el9.* Adding versionlock on: mariadb-server-0:10.11.8-1.el9.* Adding versionlock on: mariadb-common-0:10.11.8-1.el9.*
mariadb-server が依存する mariadb・mariadb-common も合わせてロックしておくと、依存パッケージ経由での間接アップグレードを防げる。
3. ロック状態を確認する
$ dnf versionlock list Last metadata expiration check: 0:02:14 ago on Sat 11 Oct 2026 10:23:05 JST. mariadb-0:10.11.8-1.el9.* mariadb-common-0:10.11.8-1.el9.* mariadb-server-0:10.11.8-1.el9.*
dnf update を実行すると、ロック対象のパッケージが除外されていることを確認できる。
$ sudo dnf update mariadb-server --assumeno Last metadata expiration check: 0:02:38 ago on Sat 11 Oct 2026 10:23:29 JST. Excludes from versionlock: mariadb-server-0:10.11.8-1.el9.* Nothing to do. Complete!
Excludes from versionlock」が表示されれば正常にロックが機能している。
4. ロックを解除して手動更新する
バージョンを上げるタイミングが来たら、ロック解除→更新→再ロックの順で操作する。更新前には必ずバックアップを取っておくこと。# ロックを解除 $ sudo dnf versionlock delete mariadb-server mariadb mariadb-common Deleting versionlock for: mariadb-0:10.11.8-1.el9.* Deleting versionlock for: mariadb-server-0:10.11.8-1.el9.* Deleting versionlock for: mariadb-common-0:10.11.8-1.el9.* # サービス停止後に更新 $ sudo systemctl stop mariadb $ sudo dnf update mariadb-server mariadb mariadb-common -y # 更新後のバージョンで再ロック $ rpm -q mariadb-server mariadb-server-10.11.10-1.el9.x86_64 $ sudo dnf versionlock add mariadb-server mariadb mariadb-common Adding versionlock on: mariadb-0:10.11.10-1.el9.* Adding versionlock on: mariadb-server-0:10.11.10-1.el9.* Adding versionlock on: mariadb-common-0:10.11.10-1.el9.*
/etc/dnf/plugins/versionlock.list(RHEL 8/9 系)または /etc/yum/pluginconf.d/versionlock.list(RHEL 7 系)に保存される。コマンド経由での管理が推奨だが、緊急時は直接編集も可能だ。
apt-pinning で MariaDB を固定する(Ubuntu/Debian)
Ubuntu/Debian 系では/etc/apt/preferences.d/ に設定ファイルを置く「apt-pinning」でバージョンを固定する。apt-mark hold でもホールドできるが、バージョン範囲指定の柔軟性が高い apt-pinning のほうが運用向きだ。
1. 現在のバージョンと更新候補を確認する
# Ubuntu 22.04 LTS + MariaDB 公式リポジトリ $ dpkg -l mariadb-server Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Name Version Architecture Description +++-=================-===========================-============-==================== ii mariadb-server 1:10.11.8+maria~ubu2204 amd64 MariaDB database server # リポジトリにある全バージョン候補を確認 $ apt-cache policy mariadb-server mariadb-server: Installed: 1:10.11.8+maria~ubu2204 Candidate: 1:11.4.3+maria~ubu2204 Version table: 1:11.4.3+maria~ubu2204 500 500 https://downloads.mariadb.com/MariaDB/mariadb-11.4/repo/ubuntu jammy/main amd64 Packages *** 1:10.11.8+maria~ubu2204 500 500 https://downloads.mariadb.com/MariaDB/mariadb-10.11/repo/ubuntu jammy/main amd64 Packages 100 /var/lib/dpkg/status
apt upgrade を流すとメジャーバージョンが上がってしまう。
2. preferences ファイルを作成してピンを設定する
/etc/apt/preferences.d/ に MariaDB 専用の設定ファイルを作成する。
$ sudo vi /etc/apt/preferences.d/mariadb
Package: mariadb-server mariadb-client mariadb-common libmariadb3 Pin: version 1:10.11.* Pin-Priority: 1001
Pin-Priority: 1001 は「インストール済みバージョンよりも優先度が高い」ことを意味し、候補の 11.4.x よりもピン設定の 10.11.x を優先させる。Pin: version 1:10.11.* のワイルドカードにより、10.11.8 → 10.11.10 といったパッチリリースへの更新は許容しつつ、11.x へのメジャーアップグレードは防ぐ運用ができる。特定バージョンに完全に固定したい場合は以下のように書く。
# 10.11.8 に完全固定する場合 Package: mariadb-server mariadb-client mariadb-common libmariadb3 Pin: version 1:10.11.8+maria~ubu2204 Pin-Priority: 1001
3. ピン設定を確認する
設定ファイルを作成したあとは必ずapt-get update でキャッシュを更新してから確認する。
$ sudo apt-get update $ apt-cache policy mariadb-server mariadb-server: Installed: 1:10.11.8+maria~ubu2204 Candidate: 1:10.11.8+maria~ubu2204 Package pin: 1:10.11.* Version table: 1:11.4.3+maria~ubu2204 500 500 https://downloads.mariadb.com/MariaDB/mariadb-11.4/repo/ubuntu jammy/main amd64 Packages *** 1:10.11.8+maria~ubu2204 1001 1001 /etc/apt/preferences.d/mariadb 500 https://downloads.mariadb.com/MariaDB/mariadb-10.11/repo/ubuntu jammy/main amd64 Packages 100 /var/lib/dpkg/status
Candidate がインストール済みと同じ 1:10.11.8+maria~ubu2204 に変わり、Package pin: 1:10.11.* が表示されていれば設定が反映されている。Pin-Priority: 1001 の行が /etc/apt/preferences.d/mariadb を参照していることも確認しよう。
バージョンを指定してインストール・ダウングレードする
ロックを解除せずに特定バージョンを直接インストールしたい場合は、それぞれのパッケージマネージャーでバージョンを明示指定する。 RHEL/Rocky Linux 系(dnf)# 利用可能なバージョン一覧を確認 $ dnf list --showduplicates mariadb-server | grep mariadb-server mariadb-server.x86_64 10.11.6-1.el9 mariadb mariadb-server.x86_64 10.11.8-1.el9 mariadb mariadb-server.x86_64 10.11.10-1.el9 mariadb # versionlock 解除後にダウングレード $ sudo dnf downgrade mariadb-server-10.11.6-1.el9
# 利用可能なバージョン一覧を確認 $ apt-cache madison mariadb-server mariadb-server | 1:11.4.3+maria~ubu2204 | https://downloads.mariadb.com/MariaDB/mariadb-11.4/repo/ubuntu jammy/main amd64 Packages mariadb-server | 1:10.11.8+maria~ubu2204 | https://downloads.mariadb.com/MariaDB/mariadb-10.11/repo/ubuntu jammy/main amd64 Packages # バージョンを指定してインストール(apt-pinning設定は一時的に --ignore-hold を使わない) $ sudo apt-get install mariadb-server=1:10.11.8+maria~ubu2204
トラブルシュート|よくあるエラーと対処
「Excludes from versionlock」が出ない(RHEL/Rocky Linux)
dnf-plugins-core が入っているにもかかわらずロックが効かない場合は、versionlock プラグインが無効になっている可能性がある。
# プラグインの有効状態を確認 $ cat /etc/dnf/plugins/versionlock.conf [main] enabled = 1 # enabled = 0 になっている場合は 1 に変更する $ sudo sed -i 's/^enabled = 0/enabled = 1/' /etc/dnf/plugins/versionlock.conf
apt-pinning が反映されない(Ubuntu/Debian)
設定ファイルを作成してもCandidate が変わらない場合、キャッシュ更新が済んでいないことが多い。
# キャッシュを更新してから再確認 $ sudo apt-get update $ apt-cache policy mariadb-server | grep -E 'Installed|Candidate|pin' Installed: 1:10.11.8+maria~ubu2204 Candidate: 1:10.11.8+maria~ubu2204 Package pin: 1:10.11.*
preferences.d ファイルのパーミッションとシンタックスを確認する。Pin: の値に余分なスペースや全角文字が混入しているとパースエラーになる。
# シンタックス確認(エラーがあれば表示される) $ apt-cache policy 2>&1 | head -5
versionlock.list が空になった(RHEL/Rocky Linux)
dnf versionlock clear を誤って実行すると全ロックが解除される。定期的にリストのバックアップを取っておくと安全だ。
# versionlock リストのバックアップ $ sudo cp /etc/dnf/plugins/versionlock.list /etc/dnf/plugins/versionlock.list.bak # 誤って clear してしまったときの復元 $ sudo cp /etc/dnf/plugins/versionlock.list.bak /etc/dnf/plugins/versionlock.list $ dnf versionlock list mariadb-0:10.11.8-1.el9.* mariadb-common-0:10.11.8-1.el9.* mariadb-server-0:10.11.8-1.el9.*
本記事のまとめ
MariaDB のバージョン固定には、OS 系列に合わせて適切なツールを選択する。| OS 系列 | ツール | 設定コマンド・方法 | 確認コマンド |
|---|---|---|---|
| RHEL 8/9 / Rocky Linux | dnf versionlock | dnf versionlock add パッケージ名 |
dnf versionlock list |
| RHEL 7 / CentOS 7 | yum versionlock | yum versionlock add パッケージ名 |
yum versionlock list |
| Ubuntu / Debian | apt-pinning | /etc/apt/preferences.d/ に Pin 設定を書く |
apt-cache policy パッケージ名 |
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
MariaDB をはじめとしたデータベース管理、バックアップ・復旧設計、OS アップグレードまで、Linux サーバー運用の実践的な「型」を2日間で習得できるセミナーを開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:MariaDB installをaptとtarballで使い分ける|Linuxディストリビューション別セットアップ手順
- この記事の属するカテゴリ:データーベース管理へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。
登録無料・いつでも解除できます