バナー画像

MySQLのデータベース削除についてまとめています。

以下、MySQLのバージョンは8.0.19を前提に解説しています。

MySQLのデータベース削除コマンドは、drop database

例えば、データベースemployees2を削除するには、以下のようにします。

$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.19 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> drop database employees2;
Query OK, 0 rows affected (0.21 sec)

データベース削除後は、復元する方法はないと考えておいたほうが良いでしょう。万が一のために、mysqldumpなどでバックアップを取得しておきましょう。

【関連記事】

MySQLのデータバックアップなら専用コマンドのmysqldumpを

$ mysqldump -u root -p -x employees > dump200116.sql
Enter password:

mysqldumpで取得したデータがあれば、以下のようにデータベース削除後にcreate databaseさえしておけばリストアが可能です。

$ mysql -u root -p employees2 < dump200116.sql 
Enter password: 
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.19 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> show tables;
+----------------------+
| Tables_in_employees2 |
+----------------------+
| current_dept_emp     |
| departments          |
| dept_emp             |
| dept_emp_latest_date |
| dept_manager         |
| employees            |
| salaries             |
| titles               |
+----------------------+
8 rows in set (0.00 sec)

mysql> select * from employees limit 10;

phpmyadminでデータベースを削除する手順

MySQLをウェブベースで管理するphpMyAdminからデータベースを削除するには以下のようにします。

データベースを削除できる権限を持つユーザで、phpMyAdminにログインします。

  1. 削除したいデータベースを選択します。
  2. 画面上部のメニューから「操作」をクリックします。
  3. 「データベースを削除する(DROP)」をクリックします。

「データベースを完全に削除しようとしています! DROP DATABASE データベース名 を本当に実行しますか」とメッセージが表示されるので、OKをクリックします。

なお、「データベース名の変更」という機能は、内部的にはデータベースを削除して再作成する処理になります。処理の途中で異常終了すると、データが消失してしまうケースがあるため、要注意です。

データベースから、データを削除したのにディスク空き容量が増えない

MySQLで、InnoDBを使用している場合、deleteやtruncateでデータを削除してもディスク空き容量が増えないケースがあります。

いったんデータベースを作ってしまうと、使った容量は確保されたままになるため、空き容量が減らないんですね。

空き容量を減らすためには、MySQLサービスを停止する必要がありますが、以下のようにします。

  1. 全データベースのバックアップを取得
  2. MySQLサービスを停止する
  3. MySQLのデータベースの実体ファイルを削除
  4. MySQLのデータベースをリストア

以下のコマンドで、全データベースのバックアップを取得します。

$ mysqldump -u root -p --opt --all-databases > alldb.sql
Enter password: 

いったんデータベースを削除するため、このバックアップが正常に取得できているかどうかを必ず確認してください。

以下のコマンドで、MySQLサービスを停止します。

$ sudo systemctl stop mysql
データベースの実体ファイルを確認します。デフォルトでは、/var/lib/mysql以下のib_logfileがログ用領域ファイル、ibdata1がデータ用領域ファイルです。
$ cd /var/lib/mysql
$ ls -l
total 307924
drwxr-x--- 2 mysql mysql     4096 Jan 25 10:52 #innodb_temp
-rw-r----- 1 mysql mysql       56 Jan 17 03:58 auto.cnf
 :
 :
-rw-r----- 1 mysql mysql 50331648 Jan 25 10:52 ib_logfile0
-rw-r----- 1 mysql mysql 50331648 Jan 25 10:52 ib_logfile1
-rw-r----- 1 mysql mysql 12582912 Jan 25 10:52 ibdata1
 :
 :

対象のファイルを削除します。

$ sudo rm ib_logfile0 ib_logfile1 ibdata1

データベースを起動します。

$ sudo systemctl start mysql

以下のコマンドで、全データベースをリストアします。

$ mysql -u root -p < alldb.sql 
Enter password: 

上記の手順は、実際にデータベースを一度削除するため、テスト環境などで動作を確認してから実行しましょう。

まとめ

ポテパンダの一言メモ
  • データベース削除は、drop databaseで実行
  • 一度削除したデータベースを復元するには、バックアップが必須
  • phpMyAdminからデータベース削除も可能
  • データベース領域の空き容量を増やすには、一度データベースを削除してからリストアする必要がある

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。