MariaDBはパッケージをインストールするだけでは使えません。サービスの起動、初期セキュリティ設定、root接続の確認、そして実際のデータベースとユーザーの作成まで順に進める必要があります。
この記事では、Rocky Linux 9(RHEL 9系)を対象に、MariaDB 10.11 LTSのインストール直後から実際に使えるまでの初期設定を解説します。systemctlによる起動確認から、mysql_secure_installationの実行、rootとしての接続確認、データベースとユーザーの作成まで、実際のサーバー出力例とともに確認できます。
動作確認環境:Rocky Linux 9.4 / MariaDB 10.11 LTS
この記事のポイント
・systemctl start/enable mariadb で起動と自動起動を設定する
・mysql_secure_installation でrootパスワード設定と匿名ユーザー削除を行う
・sudo mysql -u root でroot接続後、CREATE DATABASEでDBを作成する
・GRANT文でユーザーに権限を付与して接続確認まで完了させる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
インストール直後のMariaDBをそのまま使ってはいけない理由
パッケージマネージャーでMariaDBをインストールした直後の状態には、本番運用に向けた初期設定がいくつか残っています。・サービスが起動していない:インストール直後は自動で起動していない場合があります。
・rootのパスワードが未設定:初期状態のrootアカウントはunix_socket認証のみで設定されており、パスワードが空のケースがあります。
・匿名ユーザーが存在する:デフォルトではパスワードなしでログインできる匿名アカウントが含まれています。
・testデータベースが存在する:誰でも操作できる不要なテストデータベースが作成されています。
これらの問題を解消するのが以降の手順です。実務で使うサーバーは必ずこの初期設定を済ませてから業務用途に使い始めてください。
MariaDBの起動状態をsystemctlで確認する
1. サービスの状態を確認する
まずMariaDBサービスが動作しているか確認します。# systemctl status mariadb で状態確認 sudo systemctl status mariadb
* mariadb.service - MariaDB 10.11 database server Loaded: loaded (/usr/lib/systemd/system/mariadb.service; disabled; vendor preset: disabled) Active: inactive (dead)
「Active: active (running)」と表示されていればすでに起動済みです。
2. サービスを起動して自動起動を有効にする
以下の2つのコマンドで、サービスの起動と次回OS再起動時からの自動起動を設定します。# サービスを起動する sudo systemctl start mariadb # OS起動時の自動起動を有効化する sudo systemctl enable mariadb
Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service. Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.
3. 3306番ポートのリスニングを確認する
MariaDBはデフォルトでTCPの3306番ポートを使用します。ssコマンドで確認できます。# 3306番ポートのリスニング状態を確認する ss -tlnp | grep 3306
LISTEN 0 80 0.0.0.0:3306 0.0.0.0:* users:(("mariadbd",pid=1906,fd=19))
mysql_secure_installationで初期セキュリティ設定を行う
MariaDBにはセキュリティ初期化スクリプト「mysql_secure_installation」が付属しています。このスクリプトを実行することで、rootパスワードの設定、匿名ユーザーの削除、testデータベースの削除を対話形式で完了できます。1. スクリプトを実行する
# セキュリティ初期化スクリプトを実行する sudo mysql_secure_installation
2. 各プロンプトへの回答と意味
スクリプトは対話形式で以下の順に設定を確認してきます。実際のサーバー出力例と推奨の回答を示します。NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! Enter current password for root (enter for none): OK, successfully used password, moving on... Switch to unix_socket authentication [Y/n] n ... skipping. Change the root password? [Y/n] y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success! Remove anonymous users? [Y/n] y ... Success! Disallow root login remotely? [Y/n] y ... Success! Remove test database and access to it? [Y/n] y - Dropping test database... ... Success! - Removing privileges on test database... ... Success! Reload privilege tables now? [Y/n] y ... Success! Thanks for using MariaDB!
・Enter current password for root:初回はパスワード未設定なのでそのままEnterを押します。
・Switch to unix_socket authentication:すでにunix_socket認証が設定済みの場合はnを入力します。
・Change the root password?:yを入力してrootのパスワードを設定します。本番環境では必ず設定してください。
・Remove anonymous users?:yを入力して匿名ユーザーを削除します。
・Disallow root login remotely?:yを入力してrootのリモートログインを禁止します。
・Remove test database and access to it?:yを入力してtestデータベースを削除します。
・Reload privilege tables now?:yを入力して変更を即時反映させます。
rootアカウントでMariaDBに接続する
1. sudoを使ったroot接続
MariaDB 10.4以降、rootアカウントはデフォルトでunix_socket認証(OSのrootユーザーだけが接続できる仕組み)が設定されています。Linuxの一般ユーザーでも `sudo` を使えば接続できます。# sudoを使ってrootとして接続する sudo mysql -u root
Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 4 Server version: 10.11.8-MariaDB MariaDB Server Copyright (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)]>
2. パスワード認証に切り替える方法
アプリケーションからrootを使うなど、パスワード認証を使いたい場合はプラグインを変更します。MariaDB内で以下を実行します。-- rootをパスワード認証(mysql_native_password)に切り替える ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('設定したいパスワード'); FLUSH PRIVILEGES;
データベースとユーザーを作成する
MariaDBに接続した状態(`MariaDB [(none)]>` プロンプト)で以下を実行します。1. データベースを作成する
文字コードはutf8mb4(絵文字を含む4バイトUnicode対応)を推奨します。-- データベースを作成する(文字コードはutf8mb4推奨) CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
Query OK, 1 row affected (0.001 sec)
MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | myapp_db | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.001 sec)
2. ユーザーを作成して権限を付与する
アプリケーションが接続する専用ユーザーを作成します。rootで直接アプリから接続させるのは運用上のリスクがあるため、必要な権限だけを持つ専用ユーザーを用意するのが実務の鉄則です。-- ユーザーを作成する CREATE USER 'appuser'@'localhost' IDENTIFIED BY '強力なパスワード'; -- データベースへの権限を付与する GRANT ALL PRIVILEGES ON myapp_db.* TO 'appuser'@'localhost'; -- 権限を反映する FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.001 sec) Query OK, 0 rows affected (0.003 sec) Query OK, 0 rows affected (0.001 sec)
・リモートからの接続を許可する場合:HOSTを `'%'` または接続元のIPアドレスに変更します(例:`'192.168.1.10'`)。
本番環境でのLinuxサーバー上のDB運用を体系的に学びたい場合は、Linux Master Pro Seminarでハンズオン形式の実践的なトレーニングを受けられます。
3. 作成したユーザーを確認する
-- ユーザー一覧と認証プラグインを確認する SELECT User, Host, plugin FROM mysql.user;
+-------------+-----------+-----------------------+ | User | Host | plugin | +-------------+-----------+-----------------------+ | appuser | localhost | mysql_native_password | | mariadb.sys | localhost | mysql_native_password | | root | localhost | unix_socket | +-------------+-----------+-----------------------+ 3 rows in set (0.001 sec)
接続テストで動作確認する
MariaDBを一度exitして、作成した専用ユーザーで接続テストを行います。# MariaDBプロンプトから抜ける exit # 作成した専用ユーザーで接続する mysql -u appuser -p myapp_db
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 7 Server version: 10.11.8-MariaDB MariaDB Server MariaDB [myapp_db]>
よくあるエラーと対処法
「ERROR 1698 (28000): Access denied for user 'root'@'localhost'」が出る
`sudo` なしで `mysql -u root -p` を実行すると表示されるエラーです。MariaDB 10.4以降のrootはunix_socket認証が有効なため、一般ユーザー権限での接続が拒否されます。対処法:`sudo mysql -u root` のようにsudoをつけて実行してください。どうしてもsudoなしで接続したい場合は、前述のALTER USERでプラグインをmysql_native_passwordに変更します。
「ERROR 2002 (HY000): Can't connect to local MySQL server through socket」が出る
MariaDBサービスが起動していない場合に表示されます。# サービスの状態を確認する sudo systemctl status mariadb # 停止していた場合は起動する sudo systemctl start mariadb
# journalctlでMariaDBのエラーログを確認する sudo journalctl -xeu mariadb
本記事のまとめ
MariaDBのインストール直後に行う初期設定の手順をまとめます。| やること | コマンド・SQL |
|---|---|
| サービスの起動 | sudo systemctl start mariadb |
| 自動起動の有効化 | sudo systemctl enable mariadb |
| 起動状態の確認 | sudo systemctl status mariadb |
| 初期セキュリティ設定 | sudo mysql_secure_installation |
| rootでの接続 | sudo mysql -u root |
| データベースの作成 | CREATE DATABASE db名 CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; |
| ユーザーの作成 | CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード'; |
| 権限の付与 | GRANT ALL PRIVILEGES ON db名.* TO 'ユーザー名'@'localhost'; |
| 権限の反映 | FLUSH PRIVILEGES; |
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、
MariaDBの構築・運用を含む実務レベルのLinuxサーバー管理を、少人数ハンズオン形式で体系的に学べます。受講後は現場でそのまま使えるコマンドと設定の「型」が身につきます。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら
- 前のページへ:MariaDB portをカスタム番号に切り替える方法|ss・netstatで確認まで
- この記事の属するカテゴリ:データーベース管理へ戻る

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