HOME > 技術ドキュメント > MySQL インストール・初期設定(Ubuntu 24.04)
MySQL インストール・初期設定(Ubuntu 24.04 LTS)
MySQL は世界で最も普及している RDB(リレーショナルデータベース)の一つです。
PHP との組み合わせ(LAMP 構成)での Web 開発や、各種 CMS(WordPress など)のバックエンドとして広く使われています。
この記事では Ubuntu 24.04 LTS へのインストールから初期セキュリティ設定、アプリケーションからの接続まで解説します。
1. インストール
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
2. 初期セキュリティ設定(mysql_secure_installation)
インストール直後は root のパスワードが未設定など、安全でない状態です。
mysql_secure_installation コマンドで初期設定を行います。
sudo mysql_secure_installation
対話形式で以下を設定します:
| 質問 | 推奨設定 |
|---|---|
| VALIDATE PASSWORD component を有効にするか | Yes(パスワード強度チェックを有効化) |
| パスワード強度レベル | 1(MEDIUM)以上を推奨 |
| root パスワードを変更するか | Yes(強いパスワードを設定) |
| 匿名ユーザーを削除するか | Yes |
| root のリモートログインを禁止するか | Yes |
| test データベースを削除するか | Yes |
| 権限テーブルをリロードするか | Yes |
3. root でのログイン確認
Ubuntu 24.04 では、デフォルトで root は auth_socket 認証(OS ユーザーによる認証)を使います。
# sudo 経由でパスワードなしで接続できる sudo mysql # または root パスワードを使う場合 mysql -u root -p
4. アプリ用ユーザーとデータベースの作成
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バイト)を使うのが現在のベストプラクティスです。
5. 接続確認
# appuser でデータベース appdb に接続 mysql -u appuser -p appdb # パスワードを入力して接続できれば成功 # mysql>
6. テーブルの作成と基本操作
-- テーブル作成
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;
7. PHP PDO からの接続
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');
}
パスワードは設定ファイルや環境変数で管理し、ソースコードに直接書かないようにしてください。
8. Go 言語からの接続(go-sql-driver/mysql)
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)
}
9. 主な設定ファイルと管理コマンド
/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)
SSL証明書で Web アプリを HTTPS 化する
MySQL でデータを管理する Web アプリケーションには、通信経路の暗号化として SSL証明書(HTTPS)が不可欠です。
エスロジカルではデジサート・サイバートラストの正規取扱代理店として、
RapidSSL 3,960円/1年(税込)〜で 2009年から 16年以上販売しています。
審査サポート・インストール代行あり。平日 9:00〜18:00 のメールサポート付きです。
SSL証明書の購入はこちら / 購入から発行までの流れ / インストール代行サービス
