Rocky Linux / MariaDB をインストールする方法
Rocky Linuxではmariadb-serverパッケージをインストールし、mariadbサービスを有効にするとMariaDBサーバーを起動できます。インストール後はmariadb-secure-installationで不要なデフォルトアカウントを整理し、アプリケーションにはrootではない最小権限のアカウントを作成して使用してください。
提供バージョンとパッケージの確認
cat /etc/rocky-release
dnf info mariadb-server
dnf module list mariadb
Rocky LinuxのバージョンとDNFの実装により、モジュールコマンドのサポート状況や提供バージョンが異なります。アプリケーションが特定のMariaDBのメジャーバージョンを要求する場合は、デフォルトリポジトリかMariaDB公式リポジトリのいずれかを選択し、異なるリポジトリのサーバーパッケージを混在させないでください。
MariaDBのインストールと起動
サーバーパッケージのインストール
sudo dnf install mariadb-server
インストール結果を確認します。
rpm -q mariadb-server
mariadb --version
サービスの有効化
sudo systemctl enable --now mariadb
systemctl status mariadb
起動に失敗した場合は、次のログで原因を確認してください。
journalctl -u mariadb -b --no-pager
ローカル管理者接続の確認
sudo mariadb
最近のMariaDBでは、rootデータベースアカウントにUnixソケット認証を使用する構成が一般的です。この場合、Linuxの管理者権限でローカル接続でき、データベースrootパスワードを別途作成する必要がない場合があります。
初期セキュリティ設定
前節でMariaDBの対話画面を開いた場合はexit;でシェルへ戻ります。以下は新規の単体サーバー向けです。既存データやアカウントを確認してから操作し、Galeraなどの既存クラスターへ同じ初期化手順を機械的に適用しないでください。
sudo mariadb-secure-installation
このツールは匿名ユーザーの削除、リモートroot接続の制限、テストデータベースの削除などを対話形式で設定します。MariaDB 10.4以降では、Unixソケット認証のため、古い案内や質問の流れが異なる場合があります。詳細はMariaDB公式セキュリティインストール文書を確認してください。
mysql_secure_installationという名前は互換用リンクとして残っている場合がありますが、新しい文書ではmariadb-secure-installationを使用するほうが明確です。
アプリケーション用データベースとアカウントの作成
sudo mariadbで管理者として再接続し、この節のSQLをMariaDBの対話画面で実行します。次のシェル操作へ進む前にexit;で終了します。
データベースの作成
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
照合順序は検索・ソート結果やインデックスの動作に影響を与えます。アプリケーションの要件と使用するMariaDBバージョンのサポートリストを確認してください。
ローカル専用ユーザーの作成
CREATE USER 'appuser'@'localhost' IDENTIFIED BY 'replace-with-a-strong-secret';
GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'localhost';
例のパスワードは実際の強い秘密値へ置き換えます。SQLの入力もクライアント履歴や操作記録へ残る可能性があるため、秘密値の入力・保存経路を管理してください。アプリケーションに必要な権限だけを付与し、GRANT ALL ON *.*やリモート root の使用を避けてください。
権限確認
SHOW GRANTS FOR 'appuser'@'localhost';
最近の MariaDB では、アカウント・権限変更コマンドが即時反映されるため、通常の CREATE USER および GRANT の後に必ず FLUSH PRIVILEGES を実行する必要はありません。権限テーブルを直接修正しないでください。
リモート接続を限定的に許可する
現在の受信設定を確認する
sudo mariadbd --print-defaults
ss -lntp | grep 3306
設定ファイルの場所と順序はパッケージごとに確認します。/etc/my.cnfと/etc/my.cnf.d/のinclude関係を調べ、編集前にバックアップします。--print-defaultsは読み込むオプションの表示で、実行中サーバーの全設定値ではありません。必要な実効値はSQLのSHOW VARIABLESや待ち受け状態でも確認し、秘密値を含み得る結果をそのまま公開しないでください。
特定のサーバーアドレスでのみ待ち受ける
[mysqld]セクションへ、サーバーが実際に持つプライベートIPを指定します。192.0.2.20は文書用で、実環境のアドレスへ置き換えます。skip-networkingが有効ならTCP接続を受け付けない点も確認します。TLS(Transport Layer Security)を使う場合は、ssl_cert・ssl_key・必要なCA(Certificate Authority)のssl_caを設定し、サーバーが証明書と秘密鍵を読める所有者・権限・SELinux条件を用意します。
[mysqld]
bind-address = 192.0.2.20
0.0.0.0 はすべてのIPv4インターフェースで受信するため、必要な場合でない限り特定のアドレスに制限してください。リモート接続の設定は MariaDB リモート接続公式ガイド を参照できます。
リモート専用ユーザーとファイアウォール制限
まずsudo mariadbで管理者接続し、次のSQLでリモート用アカウントを作成します。アカウントを作成した後、TLSを必須にする場合はサーバー側の証明書設定を準備した上でALTER USER 'appuser'@'192.0.2.10' REQUIRE SSL;も適用します。その後exit;でシェルへ戻ってfirewall-cmdを実行します。
CREATE USER 'appuser'@'192.0.2.10' IDENTIFIED BY 'replace-with-a-strong-secret';
GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'appuser'@'192.0.2.10';
sudo firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.0.2.10/32" port port="3306" protocol="tcp" accept'
文書用アドレスは実際のアプリケーションサーバーへ置き換え、publicも実際のゾーンに合わせます。%のユーザーHostや他の広い許可が残っていないか、IPv6側も確認してください。ここではランタイムだけへ追加し、永続保存は接続試験後に行います。手順はfirewalldの管理方法も参照してください。
設定の適用と接続テスト
sudo systemctl restart mariadb
sudo systemctl status mariadb
ss -lntp | grep 3306
クライアントへMariaDBクライアントを用意し、サーバーの例示IP192.0.2.20に対応する実際のDNS名で接続します。以下のdb.example.testは、サーバー証明書の名前と一致し、対象サーバーへ解決できる名前へ変更します。/path/to/ca.pemもクライアント側に用意した信頼するCA証明書の実パスへ変更してください。
mariadb --host=db.example.test --user=appuser --password --ssl-ca=/path/to/ca.pem --ssl-verify-server-cert appdb
--password の後に値を直接付けない場合、対話式で入力できます。パスワードをコマンドラインに書くと、シェルの履歴やプロセス一覧に露出する可能性があります。
SQLのSHOW SESSION STATUS LIKE 'Ssl_cipher';で暗号方式が表示されるか確認し、クライアントのサーバー証明書検証も有効にします。TLSの既定動作は版により異なるため、MariaDBのTLS設定を照合してください。正常な新規接続と許可範囲を確かめた後で、サーバーのシェルからsudo firewall-cmd --runtime-to-permanentを実行します。現在のランタイム構成全体を保存するので、他の一時変更も確認してください。
アップデートとバックアップ前の確認事項
- データと設定ファイルを定期的にバックアップし、別のシステムで復元テストを行います。
- メジャーバージョンの変更前にリリースノート、削除された機能、および文字セット・照合順序の互換性を確認します。
- パッケージ更新後、必要に応じて
mariadb-upgradeを実行するかどうかをインストールしたバージョンのドキュメントで確認します。 - ディスク使用量、接続数、遅いクエリ、レプリケーション状態およびエラーログを監視します。
- アプリケーション資格情報は、設定ファイルの権限またはシークレット管理システムで保護します。
よくある質問
sudo mariadbは実行できるが、mariadb -u root -pは失敗します。
rootアカウントがUnixソケット認証を使用している可能性があります。現在の認証プラグインを確認し、特別な理由がなければローカル管理者アクセス方式を維持してください。
外部接続ができません
bind-address、リモートユーザーアカウントのHost値、3306受信状態、firewalldとクラウドセキュリティグループを順に確認してください。
3306ポートを全インターネットに開放してもいいですか?
推奨されません。アプリケーションサーバーの固定アドレスやプライベートネットワークに制限し、VPN・TLS・最小権限アカウントを併用してください。
mysql_secure_installationを使用してもよいですか?
互換用名前で提供されることがありますが、MariaDBドキュメントの現在の名前はmariadb-secure-installationです。インストール済み実行ファイルとバージョンドキュメントを確認してください。
まとめ
mariadb-serverをインストールしてサービスを有効化した後、初期セキュリティツールを実行してください。アプリケーションには別のデータベースと最小権限アカウントを使用します。
リモート接続が必要な場合は、特定のプライベートアドレスでのみ待ち受け、アカウントHostとファイアウォールの送信元アドレスを制限し、TLSおよびバックアップ・復旧手順まで準備してください。




