MySQLの使い方
MySQL は、多くの Web サイトやアプリケーションで使われているリレーショナルデータベースです。インストールが簡単で、ツールが充実しており、標準の SQL に独自の拡張を加えて使えます。この記事では、インストール、データベースとユーザーの作成、テーブルの作成、`mysqldump` によるバックアップを説明します。
テストに関する注意:この記事を書いたコンピューターには MySQL サーバーがないため、コマンドはここでは実行していません。使っている SQL は、SQL の記事で SQLite を使って検証した標準的な SQL と同じです。MySQL を導入したマシンで自分で実行してください。
必要なもの
- dev.mysql.com からダウンロードした MySQL 8.0 以上、またはほとんど同じコマンドを使う MariaDB
- インストール時に設定した root のパスワード
クライアントの接続
手順1:接続する
mysql -u root -p
手順2:データベースとユーザーを作成する
CREATE DATABASE school CHARACTER SET utf8mb4;
CREATE USER 'teacher'@'localhost' IDENTIFIED BY 'change-me';
GRANT SELECT, INSERT, UPDATE, DELETE ON school.* TO 'teacher'@'localhost';
FLUSH PRIVILEGES;
`CHARACTER SET utf8mb4` によって、タイ語や絵文字を正しく保存できます。サンプルのパスワードは強いものに変更してください。
手順3:テーブルを作成してデータを追加する
USE school;
CREATE TABLE students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
score INT
);
INSERT INTO students (name, score) VALUES ('สมชาย', 85), ('สมหญิง', 72);
SELECT name, score FROM students WHERE score >= 80;
`AUTO_INCREMENT` は番号を自動で作り、`VARCHAR(100)` は文字列の最大長を指定します。
手順4:バックアップと復元
mysqldump -u root -p school > school_backup.sql
mysql -u root -p school < school_backup.sql
よくあるミス
- **タイ語が ? のように表示される:** データベースと接続が `utf8mb4` を使っているか確認します。
- **アプリケーションに root アカウントを渡す:** 必要な権限だけを持つ別のユーザーを作ります。
- **変更前にバックアップを取らない:** テーブル構造を変更する前には毎回 `mysqldump` を実行します。
次のステップ
クエリを速くするインデックス、クエリの実行計画を見る `EXPLAIN`、自動バックアップの設定を学びましょう。
まとめ
MySQL は、データベースとユーザー権限を分けて管理するサーバーとして動きます。最初から `utf8mb4` を設定すること、ユーザーを分けること、定期的にバックアップすることが、実際の利用の基礎になります。