MariaDB初期設定後に行うroot接続とDB作成手順|systemctlで起動確認まで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Linuxtips > データーベース管理 > MariaDB初期設定後に行うroot接続とDB作成手順|systemctlで起動確認まで
「MariaDBをインストールしたが、次に何をすればいいかわからない」という状況に陥っていませんか。
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文でユーザーに権限を付与して接続確認まで完了させる


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

インストール直後の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: 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.

再度 `systemctl status mariadb` を実行して「Active: active (running)」に変わっていれば起動成功です。

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))

「0.0.0.0:3306」でLISTENと表示されれば正常です。ssコマンドの詳しい使い方はLinux ポート確認の全コマンドで解説しています。

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)]>

MariaDBのプロンプト(`MariaDB [(none)]>`)が表示されれば接続成功です。

2. パスワード認証に切り替える方法

アプリケーションからrootを使うなど、パスワード認証を使いたい場合はプラグインを変更します。MariaDB内で以下を実行します。

-- rootをパスワード認証(mysql_native_password)に切り替える ALTER USER 'root'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('設定したいパスワード'); FLUSH PRIVILEGES;

注意:sudoが使えるサーバーではunix_socket認証のままにしておく方がセキュリティ上安全です。本番環境でrootを直接アプリから使う運用は避け、必要な権限だけを持つ専用ユーザーを作成してください。

データベースとユーザーを作成する

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)

作成後に `SHOW DATABASES;` で確認します。

MariaDB [(none)]> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | myapp_db | | mysql | | performance_schema | | sys | +--------------------+ 5 rows in set (0.001 sec)

「myapp_db」が表示されていれば作成成功です。

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)

・SELECT・INSERT・UPDATE・DELETEのみ付与する場合:`GRANT SELECT, INSERT, UPDATE, DELETE ON myapp_db.* TO 'appuser'@'localhost';` とします。
・リモートからの接続を許可する場合: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)

「appuser」が追加されていれば作成成功です。

接続テストで動作確認する

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]>

プロンプトが `MariaDB [myapp_db]>` になっていれば、appuserで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でエラーログを確認します。データディレクトリの権限問題や設定ファイルの構文エラーが原因になることがほとんどです。

# 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サーバー管理を、少人数ハンズオン形式で体系的に学べます。受講後は現場でそのまま使えるコマンドと設定の「型」が身につきます。

>> Linux Master Pro Seminar の詳細を見る

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。