Skip to content
VDS · データベース

MySQLとMariaDB:インストールと最初のデータベース

VDSへのデータベースサーバーのインストール、安全な初期設定、データベースとユーザーの作成、接続確認、よくある初期エラーを説明します。

更新日 2026年8月23日

MySQLとその互換ブランチであるMariaDBは、ほとんどのPHPサイトが動作する基盤です。コマンドとクライアントは同じで、違いは細かなチューニングから始まります。

インストール

apt update && apt install -y mariadb-server      # Debian, Ubuntu
dnf install -y mariadb-server                    # AlmaLinux, CentOS Stream
systemctl enable --now mariadb

OracleのMySQLがどうしても必要な場合は、公式リポジトリからmysql-serverをインストールしてください。サービス名はmysqlになります。

基本的な穴はすぐに塞いでおきましょう。

mariadb-secure-installation

スクリプトはrootパスワードの設定、匿名ユーザーの削除、リモートからのrootログインの禁止、テストデータベースの削除を尋ねてきます。すべて「yes」と答えてください。

データベースとユーザー

アプリケーションをrootで実行しないでください。プロジェクトごとに専用のユーザーを作成します。

CREATE DATABASE shop CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'shop'@'localhost' IDENTIFIED BY 'long-random-password';
GRANT ALL PRIVILEGES ON shop.* TO 'shop'@'localhost';
FLUSH PRIVILEGES;

utf8mb4エンコーディングは必須です。MySQLの古いutf8は1文字あたり3バイトしか保存できず、絵文字や一部の文字で壊れてしまいます。

確認:

mariadb -u shop -p shop -e "SELECT 1;"

権限の詳細については、ユーザーと権限を参照してください。

初期設定

設定は/etc/mysql/mariadb.conf.d/50-server.cnfまたは/etc/my.cnf.d/にあります。すぐに修正すべき最低限の項目は次のとおりです。

[mysqld]
bind-address = 127.0.0.1
innodb_buffer_pool_size = 1G
max_connections = 100

bind-address = 127.0.0.1はデータベースをローカルからのみアクセス可能にします。アプリケーションが同じマシン上にあるなら、この設定が正解です。外部からデータベースにアクセスする必要がある場合は、変更する前にリモートアクセスをお読みください。

バッファプールのサイズはティアごとに選択します。メモリチューニングを参照してください。

編集後はsystemctl restart mariadbを実行します。

よくあるエラー

症状原因対処
Access denied for userパスワードが間違っている、またはユーザーエントリが別のホストに紐づいているSELECT user, host FROM mysql.user;を確認する
Can't connect through socketサービスが起動していないsystemctl status mariadb、journalctl -u mariadbを確認する
Too many connectionsアプリケーションが接続を閉じていないアプリケーション側でプールを設定し、その後max_connectionsを調整する
文字化けデータベースと接続でエンコーディングが異なるすべてをutf8mb4に統一する
再起動後にデータベースが起動しないサービスが自動起動に設定されていないsystemctl enable mariadbを実行する

マシンの自動バックアップはありません。最初のテーブルが動作した直後にダンプを設定してください。データベースのバックアップを参照してください。NVMeディスクは高速ですが、1台しかありません。