【初心者向け】SQLでデータベース一覧を確認する方法

データベース・SQL

「このサーバーにはどんなデータベースがあるの?」
「データベースの名前を忘れてしまった…一覧で確認したい」

そんなときに役立つのが、データベース一覧を表示するコマンドです。

この記事では、MySQL、PostgreSQL、SQLiteでデータベースの一覧を確認する方法を、初心者の方にもわかりやすく説明します。

スポンサーリンク

データベース一覧確認の必要性

なぜ一覧確認が大切?

複数のプロジェクト管理 一つのサーバーで複数のウェブサイトやアプリを運用している場合

作業前の確認 データベースを操作する前に、正しい名前を確認したい

整理・掃除 不要になったデータベースを見つけて削除したい

権限の確認 自分がアクセスできるデータベースを知りたい

データベース管理システムとは

MySQL 世界で最も使われているオープンソースデータベース

PostgreSQL 高機能で信頼性の高いオープンソースデータベース

SQLite ファイルベースの軽量データベース

MySQLでデータベース一覧を確認

基本的な確認方法

説明 MySQLでは、とてもシンプルなコマンドでデータベース一覧を表示できます。

コマンド

SHOW DATABASES;

実行結果の例

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| myapp_db           |
| blog_db            |
+--------------------+
6 rows in set (0.00 sec)

解説

  • information_schema:データベースの情報を管理
  • mysql:MySQLシステム用
  • performance_schema:性能監視用
  • sys:システム管理用
  • myapp_db:ユーザーが作成したデータベース
  • blog_db:ユーザーが作成したデータベース

MySQLに接続する方法

コマンドライン接続

mysql -u ユーザー名 -p

実行例

mysql -u root -p

実行結果

Enter password: ********
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.33 MySQL Community Server

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

mysql>

接続後にデータベース一覧を表示

mysql> SHOW DATABASES;

特定の条件でデータベースを絞り込み

パターンマッチング

SHOW DATABASES LIKE 'app%';

実行結果

+------------------+
| Database (app%)  |
+------------------+
| app_development  |
| app_test         |
| app_production   |
+------------------+

解説

  • %は任意の文字列を表す
  • appで始まるデータベースのみ表示

PostgreSQLでデータベース一覧を確認

psqlコマンドを使う方法

説明 PostgreSQLの専用コマンドラインツール「psql」を使った確認方法です。

コマンド

\l

または

\list

実行結果の例

                                List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 myapp     | appuser  | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
 blog      | bloguser | UTF8     | en_US.UTF-8 | en_US.UTF-8 | 
(5 rows)

PostgreSQLに接続する方法

基本的な接続

psql -U ユーザー名 -d データベース名

ローカル接続の例

psql -U postgres

リモート接続の例

psql -h localhost -U postgres -d myapp

接続後のプロンプト

postgres=#

SQL文を使う方法

説明 標準的なSQL文でも一覧を取得できます。

コマンド

SELECT datname FROM pg_database;

実行結果

  datname  
-----------
 postgres
 template1
 template0
 myapp
 blog
(5 rows)

詳細情報を含む場合

SELECT datname, datowner, encoding FROM pg_database;

psqlの便利なコマンド

データベース情報の詳細表示

\l+

現在のデータベース接続情報

\conninfo

実行結果例

You are connected to database "postgres" as user "postgres" via socket in "/tmp" at port "5432".

SQLiteでデータベース情報を確認

SQLiteの特徴

説明 SQLiteはファイルベースのデータベースなので、「複数のデータベース」という概念が少し異なります。

SQLiteの特徴

  • 1つのファイル = 1つのデータベース
  • 複数のデータベースファイルを同時に開くことも可能
  • サーバーが不要な軽量データベース

SQLiteに接続する方法

基本的な接続

sqlite3 データベース名.db

実行例

sqlite3 myapp.db

実行結果

SQLite version 3.39.5 2022-10-14 20:58:05
Enter ".help" for usage hints.
sqlite>

アタッチされたデータベースの確認

コマンド

PRAGMA database_list;

実行結果の例

seq  name             file                                    
---  ---------------  ----------------------------------------
0    main             /path/to/myapp.db                       
1    temp                                                     

解説

  • seq:データベースの番号
  • name:データベースの別名
  • file:実際のファイルパス

複数のデータベースを同時に使用

他のデータベースをアタッチ

ATTACH DATABASE 'blog.db' AS blog_db;

アタッチ後の確認

PRAGMA database_list;

実行結果

seq  name             file                                    
---  ---------------  ----------------------------------------
0    main             /path/to/myapp.db                       
1    temp                                                     
2    blog_db          /path/to/blog.db                        

SQLiteのデータベース内のテーブル一覧

テーブル一覧の表示

.tables

または

SELECT name FROM sqlite_master WHERE type='table';

データベース管理システム別の比較

各システムの一覧表示方法まとめ

データベースコマンド備考
MySQLSHOW DATABASES;シンプルで覚えやすい
PostgreSQL\l または SELECT datname FROM pg_database;psqlコマンドが便利
SQLitePRAGMA database_list;ファイルベース

接続方法の比較

データベース接続コマンド
MySQLmysql -u ユーザー名 -pmysql -u root -p
PostgreSQLpsql -U ユーザー名psql -U postgres
SQLitesqlite3 ファイル名sqlite3 myapp.db

実際に使ってみよう

MySQL練習例

手順1:MySQLに接続

mysql -u root -p

手順2:データベース一覧を表示

SHOW DATABASES;

手順3:新しいデータベースを作成して確認

CREATE DATABASE test_db;
SHOW DATABASES;

PostgreSQL練習例

手順1:PostgreSQLに接続

psql -U postgres

手順2:データベース一覧を表示

\l

手順3:SQL文でも確認

SELECT datname FROM pg_database;

SQLite練習例

手順1:SQLiteファイルを作成・接続

sqlite3 test.db

手順2:データベース情報を確認

PRAGMA database_list;

手順3:別のデータベースをアタッチして確認

ATTACH DATABASE 'another.db' AS second_db;
PRAGMA database_list;

注意点とトラブルシューティング

権限に関する注意

表示されないデータベースがある場合

  • ユーザー権限が不足している可能性
  • 管理者ユーザーで接続を試す

MySQL権限確認

SHOW GRANTS;

PostgreSQL権限確認

\du

接続できない場合の対処

MySQLの場合

# サービス状態確認
sudo systemctl status mysql

# サービス開始
sudo systemctl start mysql

PostgreSQLの場合

# サービス状態確認
sudo systemctl status postgresql

# サービス開始
sudo systemctl start postgresql

よくあるエラーと対処法

「Access denied」エラー

  • パスワードが間違っている
  • ユーザー名が間違っている
  • ホスト接続権限がない

「Connection refused」エラー

  • データベースサーバーが起動していない
  • ポート番号が間違っている
  • ファイアウォールでブロックされている

よくある質問と答え

Q. どのデータベースシステムを使えばいいですか?
A. 用途によります。WebアプリならMySQL、高機能が必要ならPostgreSQL、軽量アプリならSQLiteがおすすめです。

Q. システムデータベース(mysql、information_schemaなど)は削除していいですか?
A. 絶対に削除しないでください。システムが動かなくなります。

Q. データベース一覧を取得するときに、パスワードを入力せずに済む方法はありますか?
A. 設定ファイルにパスワードを記載する方法がありますが、セキュリティ上推奨しません。

Q. リモートサーバーのデータベース一覧を確認できますか?
A. はい、適切な接続情報(ホスト名、ポート、ユーザー名、パスワード)があれば可能です。

まとめ:データベース一覧確認で効率的な管理を

データベース一覧の確認方法を覚えることで、データベース管理が格段に楽になります。

今日覚えたこと

  • MySQLSHOW DATABASES;で一覧表示
  • PostgreSQL\lまたはSELECT datname FROM pg_database;
  • SQLitePRAGMA database_list;でアタッチ済み一覧
  • 接続方法:各システムごとに異なるコマンド

まずは使っているデータベースシステムの方法から始めましょう
慣れてきたら、他のシステムの方法も覚えておくと、いろいろな環境で役立ちます。

コメント

タイトルとURLをコピーしました