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 を使う場合はどのサイトに対して実行しているかを確認します。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲