MariaDB講座 / UbuntuにMariaDBをインストールして起動する
UbuntuではAPTでMariaDB Serverとクライアントを導入し、サービスの状態と管理者接続を確認します。新規環境ではUnix socket認証が使われることが多く、この手順の管理者接続で必ずroot用のデータベースパスワードが必要になるわけではありません。
OSと既存環境を調べる
Ubuntu 24.04 LTS、systemd、リポジトリへの接続、sudoを使えるOSアカウントを前提とします。端末で現在の状態を確認します。
cat /etc/os-release command -v mariadb systemctl status mariadb --no-pager
/etc/os-releaseはOS、command -vはクライアント、systemctl statusはサービスを確認する命令です。未導入なら実行ファイルやサービスがないのは自然です。すでにサーバーがある場合は、用途・データ・設定を調べます。本番環境を空の実習環境として扱いません。サーバーとクライアントの違いを押さえると、何が不足しているかを判断しやすくなります。
APTでインストールしてサービスを確認する
端末で順番に実行します。
sudo apt update apt-cache policy mariadb-server sudo apt install mariadb-server mariadb-client
apt updateはパッケージ情報の更新、apt-cache policyは候補の版と配布元の確認です。確認画面の一覧を読んでから導入します。Ubuntu標準パッケージとベンダー配布版のバージョンは一致するとは限りません。基礎SQLのためだけに別リポジトリを追加する必要はありません。Galera関連の依存部品があっても、クラスタの構築が必須という意味ではありません。
mariadb --version systemctl is-active mariadb systemctl is-enabled mariadb
activeは現在稼働中、enabledは起動時に自動開始する設定です。別の状態なので分けて見ます。実習用サービスが停止している場合は起動します。
sudo systemctl start mariadb
再起動後も自動開始させたい場合に有効化します。
sudo systemctl enable mariadb
socket認証で管理者接続する
新規の標準構成では、OSの管理者権限とローカルUnix socketを使います。
sudo mariadb --protocol=socket
接続後、クライアントの中で次を実行します。
SELECT VERSION() AS server_version; SELECT USER() AS connection_user, CURRENT_USER() AS privilege_account; SELECT 1 + 1 AS result;
バージョン、接続時のユーザー、権限用アカウント、計算結果2を確認します。socket認証はOSの身元を使えるため、sudo mariadbが成功しても「空のrootパスワードでTCP接続できる」とは限りません。既存環境で別の認証を使っている場合は、その設定を優先します。Windowsのパスワード認証と見た目をそろえる目的で変更しないでください。
初期セキュリティ設定の質問を判断する
EXIT;で接続を終了してから、端末で必要に応じて実行します。
sudo mariadb-secure-installation
質問の順番や文面はパッケージによって変わります。すでに確認できた認証方式を保ちながら判断します。socket認証が有効な新規環境では、入力すべき現在のrootパスワードがない場合もあります。パスワード変更やsocket切り替えを機械的に承諾しません。
実習に不要な匿名アカウントは削除し、管理者の外部ログインは許可しない方針にします。testデータベースの削除は、導入時に作られた未使用のものが対象で、shopcourseを消す操作ではありません。既存データベースがあるパソコンでは、それぞれの影響を確認してから選びます。
TCPで使う実習用ユーザーを作る
sudo mariadb --protocol=socketで再接続し、同名アカウントを確認します。
SELECT User, Host FROM mysql.user WHERE User = 'course_user';
新規の実習アカウントを作る場合に限り、仮パスワードを置き換えて実行します。
CREATE USER 'course_user'@'127.0.0.1' IDENTIFIED BY 'CHANGE_THIS_TO_YOUR_OWN_PASSWORD'; GRANT ALL PRIVILEGES ON shopcourse.* TO 'course_user'@'127.0.0.1'; SHOW GRANTS FOR 'course_user'@'127.0.0.1';
権限はshopcourse.*だけです。Hostもユーザー識別の一部なので、127.0.0.1と別のHostを同一視しません。このGRANTはデータベース作成前でも実行でき、別途FLUSH PRIVILEGESは必要ありません。
EXIT;で切断し、端末でTCP接続します。
mariadb --protocol=tcp --host=127.0.0.1 --port=3306 --user=course_user --password --default-character-set=utf8mb4 --abort-source-on-error
接続先で実行します。
SELECT CURRENT_USER() AS privilege_account;
course_user@127.0.0.1であることを確認します。以後の共通SQL実習はrootではなく、このアカウントで行います。SQLファイルの実行手順に進む前に、管理者socket接続と実習用TCP接続が区別できているか確かめます。
ログを読み、変更を戻せるようにする
起動に失敗したらサービスの状態と最近の記録を確認します。
systemctl status mariadb --no-pager sudo journalctl -u mariadb -n 80 --no-pager
接続拒否なら稼働状態、ポートと接続方式、Access deniedならユーザー・Host・パスワード・認証方法を調べます。想定外の版ならAPT候補、クライアント、接続中のサーバーを照合します。接続トラブルの切り分けも参照できます。
設定は一般に/etc/mysql/mariadb.conf.d/以下にありますが、その環境で読み込むファイルを確認します。変更前に保存し、対象インスタンスだけを再起動して確認します。失敗したら元に戻します。sudo systemctl stop mariadbは停止、sudo systemctl disable mariadbは自動起動の解除で、どちらもデータを削除しません。パッケージのpurgeやデータ領域の削除を通常の接続修復に使わないでください。




