株式会社エスロジカル
株式会社エスロジカル
SSL証明書(DV、OV、EV)、セキュリティ、Web開発、Linux開発、Go言語

HOME > 技術ドキュメント > MySQL インストール・初期設定(Ubuntu 24.04)

MySQL インストール・初期設定(Ubuntu 24.04 LTS)


MySQL は世界で最も普及している RDB(リレーショナルデータベース)の一つです。
PHP との組み合わせ(LAMP 構成)での Web 開発や、各種 CMS(WordPress など)のバックエンドとして広く使われています。
この記事では Ubuntu 24.04 LTS へのインストールから初期セキュリティ設定、アプリケーションからの接続まで解説します。


Ubuntu 24.04 のリポジトリには MySQL 8.0 が含まれています。

sudo apt update
sudo apt install -y mysql-server

# バージョン確認
mysql --version
# mysql  Ver 8.0.x Distrib 8.0.x, for Linux (x86_64)

インストール後、MySQL サービスは自動的に起動します。

# サービス状態確認
sudo systemctl status mysql

# OS 起動時に自動起動(通常はデフォルトで有効)
sudo systemctl enable mysql

インストール直後は root のパスワードが未設定など、安全でない状態です。 mysql_secure_installation コマンドで初期設定を行います。

sudo mysql_secure_installation

対話形式で以下を設定します:

質問 推奨設定
VALIDATE PASSWORD component を有効にするか Yes(パスワード強度チェックを有効化)
パスワード強度レベル 1(MEDIUM)以上を推奨
root パスワードを変更するか Yes(強いパスワードを設定)
匿名ユーザーを削除するか Yes
root のリモートログインを禁止するか Yes
test データベースを削除するか Yes
権限テーブルをリロードするか Yes

Ubuntu 24.04 では、デフォルトで root は auth_socket 認証(OS ユーザーによる認証)を使います。

# sudo 経由でパスワードなしで接続できる
sudo mysql

# または root パスワードを使う場合
mysql -u root -p

root で MySQL に接続し、アプリケーション用のユーザーとデータベースを作成します。

sudo mysql
-- データベースを作成
CREATE DATABASE appdb CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- アプリ用ユーザーを作成(localhost からのみ接続可)
CREATE USER 'appuser'@'localhost' IDENTIFIED BY '強いパスワードをここに';

-- ユーザーにデータベースへの権限を付与
GRANT ALL PRIVILEGES ON appdb.* TO 'appuser'@'localhost';

-- 権限を反映
FLUSH PRIVILEGES;

-- 確認
SHOW DATABASES;
SELECT user, host FROM mysql.user;

utf8mb4 は絵文字を含む完全な Unicode に対応しています。 MySQL の utf8(3バイト)ではなく utf8mb4(4バイト)を使うのが現在のベストプラクティスです。


# appuser でデータベース appdb に接続
mysql -u appuser -p appdb

# パスワードを入力して接続できれば成功
# mysql>

-- テーブル作成
CREATE TABLE users (
    id         INT AUTO_INCREMENT PRIMARY KEY,
    name       VARCHAR(100) NOT NULL,
    email      VARCHAR(255) NOT NULL UNIQUE,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

-- データ挿入
INSERT INTO users (name, email) VALUES ('山田太郎', 'yamada@example.com');

-- データ取得
SELECT * FROM users;

-- テーブル一覧
SHOW TABLES;

PHP から MySQL に接続する場合は PDO(PDO_MYSQL)を使います。

# PHP MySQL 拡張をインストール
sudo apt install -y php-mysql

# Apache を使っている場合は再起動
sudo systemctl restart apache2
<?php
// データベース接続設定
$dsn  = 'mysql:host=127.0.0.1;port=3306;dbname=appdb;charset=utf8mb4';
$user = 'appuser';
$pass = 'パスワード';

try {
    $pdo = new PDO($dsn, $user, $pass, [
        PDO::ATTR_ERRMODE            => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
        PDO::ATTR_EMULATE_PREPARES   => false,
    ]);

    // プリペアドステートメントで SQL インジェクションを防ぐ
    $stmt = $pdo->prepare('SELECT name, email FROM users WHERE id = :id');
    $stmt->execute([':id' => 1]);
    $row = $stmt->fetch();

    if ($row) {
        echo htmlspecialchars($row['name']) . ' / ' . htmlspecialchars($row['email']);
    }
} catch (PDOException $e) {
    // エラーメッセージを画面に出力しないこと(ログに記録する)
    error_log($e->getMessage());
    http_response_code(500);
    exit('Internal Server Error');
}

パスワードは設定ファイルや環境変数で管理し、ソースコードに直接書かないようにしてください。


go get github.com/go-sql-driver/mysql
package main

import (
    "database/sql"
    "fmt"
    "log"
    "os"

    _ "github.com/go-sql-driver/mysql"
)

func main() {
    // DSN 形式: user:password@tcp(host:port)/dbname?charset=utf8mb4&parseTime=true
    dsn := os.Getenv("DATABASE_URL")
    // 例: appuser:password@tcp(127.0.0.1:3306)/appdb?charset=utf8mb4&parseTime=true

    db, err := sql.Open("mysql", dsn)
    if err != nil {
        log.Fatal("DB接続設定エラー:", err)
    }
    defer db.Close()

    if err = db.Ping(); err != nil {
        log.Fatal("DB接続失敗:", err)
    }

    var name string
    err = db.QueryRow("SELECT name FROM users WHERE id = ?", 1).Scan(&name)
    if err != nil {
        log.Fatal("クエリ失敗:", err)
    }
    fmt.Println("名前:", name)
}

/etc/mysql/mysql.conf.d/mysqld.cnf メイン設定ファイル
/var/lib/mysql/ データディレクトリ
/var/log/mysql/error.log エラーログ

# サービス操作
sudo systemctl start|stop|restart|status mysql

# バックアップ(mysqldump)
mysqldump -u appuser -p appdb > appdb_backup.sql

# リストア
mysql -u appuser -p appdb < appdb_backup.sql

PHP + Apache 設定(Ubuntu 24.04) — PHP インストール、Apache mod_php、PDO MySQL 接続
Apache インストール(Ubuntu 24.04) — apt によるインストール、SSL 有効化、バーチャルホスト設定
PostgreSQL インストール・初期設定(Ubuntu 24.04)


MySQL でデータを管理する Web アプリケーションには、通信経路の暗号化として SSL証明書(HTTPS)が不可欠です。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、 RapidSSL 3,960円/1年(税込)〜で 2009年から 16年以上販売しています。 審査サポート・インストール代行あり。平日 9:00〜18:00 のメールサポート付きです。

SSL証明書の購入はこちら / 購入から発行までの流れ / インストール代行サービス


← 技術ドキュメント一覧へ戻る