2026年5月31日
2026年5月31日
MySQLのデータベース作成・削除コマンド(文字コードの指定と安全な削除手順)
MySQL でデータベースを作るには CREATE DATABASE、削除するには DROP DATABASE を使います。作成時には文字コード(utf8mb4)と照合順序を明示しておくと後のトラブルを防げ、削除は元に戻せないため、対象の確認とバックアップを済ませてから実行するのが鉄則です。この記事では、基本の書き方、WordPress 用のデータベースを作る例、作成後の確認と設定変更、安全に削除するための手順、WP-CLI や mysqladmin を使う方法、よくあるエラーの原因までを説明します。
ユーザーの作成と権限の付与は別の手順になります。この記事ではデータベースそのものの作成と削除を扱い、ユーザーの話は必要な範囲にとどめます。
データベースを作成する
基本の書き方
MySQL に管理者権限のあるユーザーで接続し、次のように実行します。
CREATE DATABASE wordpress
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
すでに同じ名前のデータベースがあるとエラーになります。スクリプトで繰り返し実行する場合は IF NOT EXISTS を付けると、存在するときは何もせず警告だけで終わります。
CREATE DATABASE IF NOT EXISTS wordpress
CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
CREATE DATABASE と CREATE SCHEMA は MySQL では同じ意味です。作成には、対象に対する CREATE 権限が必要です。
文字コードと照合順序を明示する理由
文字コードを省略すると、サーバーの既定値が使われます。MySQL 8.0 以降の既定は utf8mb4 と utf8mb4_0900_ai_ci ですが、MariaDB や古い MySQL では既定値が異なり、設定ファイルで変更されていることもあります。既定に任せると、環境を移したときに文字コードが食い違う原因になります。
文字コードは utf8mb4 を選んでください。MySQL の utf8(utf8mb3 の別名)は1文字3バイトまでしか扱えず、絵文字や一部の漢字を保存できません。
照合順序(文字の比較や並べ替えのルール)は、移行のしやすさで選ぶのが実用的です。
utf8mb4_0900_ai_ci: MySQL 8.0 以降で使える新しい照合順序です。MySQL 8 系だけで運用するなら選択肢になります。utf8mb4_unicode_ci: MySQL 5.7 や MariaDB にもあるため、別の環境へ移すことがあるなら無難です。
utf8mb4_0900_ai_ci で作ったデータベースのダンプを MariaDB や MySQL 5.7 に読み込もうとすると、Unknown collation: 'utf8mb4_0900_ai_ci' というエラーで止まります。レンタルサーバー間の引っ越しでよく起きるため、移行先のデータベースの種類と版を先に確認しておくと手戻りを減らせます。
WordPress用のデータベースを用意する例
WordPress 用には、データベースと専用ユーザーを作り、権限をそのデータベースに限定して与えます。
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your-strong-password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';
wp-config.php では、DB_NAME にデータベース名、DB_CHARSET に utf8mb4 を指定します。DB_COLLATE は空のままにしておくと、データベースの設定に合わせてテーブルが作られます。
名前の付け方の注意
データベース名には、英小文字・数字・アンダースコアだけを使うのが無難です。ハイフンを含む名前(my-site など)も作れますが、SQL の中でバッククォート(` my-site `)で囲む必要があり、囲み忘れると構文エラーになります。また Linux では、データベース名の大文字と小文字が区別される設定が一般的なので、小文字にそろえておくと Windows や macOS の環境と行き来するときに困りません。
作成後に確認する・設定を変える
作成したデータベースは次のコマンドで確認できます。
SHOW DATABASES;
SHOW CREATE DATABASE wordpress;
SHOW CREATE DATABASE で、文字コードと照合順序が意図どおりかを確認します。後から既定の文字コードを変えたい場合は ALTER DATABASE を使います。
ALTER DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
ただし ALTER DATABASE が変えるのは、このあと新しく作るテーブルの既定値だけです。すでにあるテーブルや列の文字コードは変わりません。既存のテーブルを変換するには、テーブルごとに ALTER TABLE ... CONVERT TO CHARACTER SET を実行する必要があり、データを書き換える操作になるので、バックアップを取ってから行ってください。
データベースのサイズは、次のクエリで確認できます。削除前の確認にも使えます。
SELECT table_schema AS db,
COUNT(*) AS tables,
ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) AS size_mb
FROM information_schema.tables
GROUP BY table_schema;
データベースを安全に削除する
DROP DATABASE は、データベースの中のすべてのテーブルとデータを削除します。ゴミ箱のような仕組みはなく、実行した時点で元に戻せません。次の手順で進めることをおすすめします。
1. 対象を確認する
SHOW DATABASES; で名前を確認し、前述のサイズのクエリで、テーブル数と容量が想定と合っているかを見ます。wordpress と wordpress_old のように似た名前が並んでいるときほど、取り違えに注意が必要です。そのデータベースを使っているサイトやアプリがないかも、wp-config.php などの接続設定を見て確かめます。
2. バックアップを取る
不要だと思っていても、削除の直前にダンプを取っておくと、後から必要になったときに戻せます。
mysqldump -u root -p --single-transaction --routines --triggers --events wordpress_old > wordpress_old_backup.sql
ls -lh wordpress_old_backup.sql
ファイルの大きさが極端に小さくないか、末尾に -- Dump completed の行があるかを確認しておくと安心です。
3. 削除する
DROP DATABASE wordpress_old;
存在しない場合にエラーにしたくないときは DROP DATABASE IF EXISTS wordpress_old; とします。削除には DROP 権限が必要です。
データベースを削除しても、そのデータベースに付けたユーザーの権限やユーザー自体は残ります。使わなくなったユーザーは DROP USER で別に削除してください。また、mysql・sys・information_schema・performance_schema は MySQL 自身が使うデータベースなので、削除や変更をしてはいけません。
データディレクトリ(/var/lib/mysql など)にあるフォルダを rm で直接消すのも避けてください。MySQL の管理情報と実際のファイルが食い違い、データベースが壊れたように見える原因になります。
mysqladminやWP-CLIを使う方法
SQL を書かずに、コマンドラインから作成・削除することもできます。
mysqladmin -u root -p create wordpress
mysqladmin -u root -p drop wordpress_old
mysqladmin create では文字コードを指定できないため、サーバーの既定値で作られます。文字コードを明示したい場合は mysql -u root -p -e "CREATE DATABASE ..." のように SQL を渡します。mysqladmin drop は実行前に確認を求めます。
WordPress のサーバーでは、WP-CLI の wp db コマンドも使えます。wp-config.php の接続情報を使うので、データベース名を打ち間違えにくいのが利点です。
wp db create
wp db export backup.sql
wp db drop
wp db create は DB_NAME のデータベースを作成し、wp db drop は同じデータベースを削除します(確認を省略する --yes は、対象を確かめてからだけ使ってください)。テーブルを空にして作り直す wp db reset もあります。いずれも wp-config.php の設定先に対して実行されるので、本番サーバーで誤って実行しないよう、作業前にどのサイトのディレクトリにいるかを確認します(2026年10月現在の WP-CLI のコマンド体系に基づいています)。
よくあるエラーと原因
- ERROR 1007 (Can't create database; database exists): 同じ名前のデータベースがすでにあります。
IF NOT EXISTSを付けるか、名前を変えます。 - ERROR 1008 (Can't drop database; database doesn't exist): 名前の打ち間違いか、すでに削除済みです。
SHOW DATABASES;で確認します。 - ERROR 1044 (Access denied for user ... to database ...): 接続しているユーザーに
CREATEやDROPの権限がありません。レンタルサーバーでは、データベースの作成や削除を管理パネルからしか行えないことが多いので、その場合はパネルの機能を使います。 - Unknown collation: 移行先にない照合順序を使ったダンプを読み込もうとしています。前述のとおり、作成時に照合順序を選ぶ段階で移行先を考慮します。
まとめ
- 作成は
CREATE DATABASE 名前 CHARACTER SET utf8mb4 COLLATE ...と、文字コードと照合順序を明示します。移行の可能性があればutf8mb4_unicode_ciが無難です。 ALTER DATABASEは今後作るテーブルの既定値を変えるだけで、既存のテーブルは変わりません。DROP DATABASEは元に戻せません。対象の確認、ダンプによるバックアップ、削除の順で進めます。- システム用のデータベースとデータディレクトリには手を触れず、WP-CLI を使う場合はどのサイトに対して実行しているかを確認します。