この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:8
ページ更新者:atom
更新日時:2026-06-11 07:29:05

タイトル: データベース一覧の確認
SEOタイトル: MySQL / PostgreSQL / SQL Server / Oracle / SQLite のデータベース一覧確認コマンド

この記事の要点
  • MySQL / MariaDB: SHOW DATABASES; または SELECT schema_name FROM information_schema.schemata;
  • PostgreSQL: psql で \l / \list、SQL は SELECT datname FROM pg_database;
  • SQL Server: SELECT name FROM sys.databases; または EXEC sp_databases;
  • Oracle: 「データベース」概念が異なる → スキーマ一覧SELECT username FROM dba_users;
  • SQLite: ファイル = 1 DB。.databases でアタッチ済一覧、PRAGMA database_list;
  • GUI: DBeaver / TablePlus / phpMyAdmin / pgAdmin / MySQL Workbench ですべて 1 クリック

MySQL / MariaDB

-- 基本コマンド
SHOW DATABASES;

-- 結果例
-- +--------------------+
-- | Database           |
-- +--------------------+
-- | information_schema |
-- | mysql              |
-- | performance_schema |
-- | sys                |
-- | myapp              |
-- +--------------------+

-- フィルタ
SHOW DATABASES LIKE 'app%';

-- information_schema 経由(標準 SQL に近い)
SELECT schema_name AS database_name
FROM   information_schema.schemata
ORDER  BY schema_name;

-- ユーザーがアクセス権を持つ DB のみ表示される(権限による)

-- 現在接続中の DB
SELECT DATABASE();

-- DB ごとのサイズ
SELECT  table_schema AS db,
        ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS size_mb
FROM    information_schema.tables
GROUP BY table_schema
ORDER BY size_mb DESC;

コマンドラインから:

# 一行クエリ
mysql -u root -p -e "SHOW DATABASES;"

# 特定の DB のテーブル一覧
mysql -u root -p mydb -e "SHOW TABLES;"

PostgreSQL

-- psql から
\l                          -- 一覧(簡易)
\l+                         -- 詳細(サイズ・オーナーなど)
\list

-- SQL クエリで
SELECT datname FROM pg_database WHERE datistemplate = false;

-- 詳細
SELECT  datname,
        pg_size_pretty(pg_database_size(datname)) AS size,
        pg_catalog.pg_get_userbyid(datdba)         AS owner
FROM    pg_database
WHERE   datistemplate = false
ORDER BY datname;

-- 現在接続中
SELECT current_database();

-- スキーマ一覧(テーブルがグループされる単位)
SELECT schema_name FROM information_schema.schemata;
\dn

-- 接続中の DB に変更
\c another_db

SQL Server

-- システムビュー
SELECT name, database_id, create_date
FROM   sys.databases
ORDER BY name;

-- 古典的なシステムストアド
EXEC sp_databases;

-- SSMS でも 「Databases」 ノードを展開すれば一覧

-- 詳細(サイズ・オーナー)
SELECT  d.name,
        SUM(mf.size) * 8 / 1024 AS size_mb,
        SUSER_SNAME(d.owner_sid) AS owner,
        d.state_desc
FROM    sys.databases d
JOIN    sys.master_files mf ON d.database_id = mf.database_id
GROUP BY d.name, d.owner_sid, d.state_desc;

-- 現在の DB
SELECT DB_NAME();

-- 切り替え
USE AdventureWorks;

Oracle

Oracle は「インスタンス内に複数 DB を持たない」モデルなので、他 RDBMS の「DB 一覧」に相当するのはスキーマ(ユーザー)一覧PDB(マルチテナント)一覧になります:

-- 現在の DB / インスタンス情報
SELECT name, dbid, created FROM v$database;
SELECT instance_name, host_name FROM v$instance;

-- スキーマ(ユーザー)一覧 — 他 RDBMS の「DB 一覧」に相当
SELECT username FROM dba_users ORDER BY username;
SELECT username FROM all_users ORDER BY username;

-- マルチテナント (CDB) の場合の PDB 一覧
SELECT name, open_mode FROM v$pdbs;

-- 現在のスキーマ
SELECT USER FROM dual;

-- 接続先 DB 名
SELECT sys_context('USERENV', 'DB_NAME')   AS db_name,
       sys_context('USERENV', 'CON_NAME')  AS pdb_name
FROM dual;

SQLite

SQLite はファイル = 1 つの DB なので「DB 一覧」という概念は限定的です:

-- sqlite3 シェルから
.databases
-- main: 現在開いているメイン DB
-- temp: 一時 DB

-- 添付 (ATTACH) した DB を含めて確認
PRAGMA database_list;
-- 0|main|/path/to/main.db
-- 1|temp|
-- 2|sub |/path/to/sub.db

-- 別 DB を添付して同時に扱う
ATTACH DATABASE '/path/to/other.db' AS otherdb;
SELECT * FROM otherdb.users;
DETACH DATABASE otherdb;

-- ファイル一覧で代用
-- $ ls -la *.db *.sqlite

GUI ツール

ツール対応 DB料金
DBeaver主要すべて (MySQL/PG/SQL Server/Oracle/SQLite/MongoDB 等)無料 (Community)
TablePlus主要すべて有料 / 制限付き無料
phpMyAdminMySQL / MariaDB無料 (Web)
pgAdminPostgreSQL無料
MySQL WorkbenchMySQL無料 (公式)
SSMSSQL Server無料 (公式)
SQL DeveloperOracle無料 (公式)

権限と可視性

注意点として、ユーザーに権限のない DB は一覧に出ないことがあります:

  • MySQL: SHOW DATABASES はそのユーザーが SHOW DATABASES 権限を持つか、何らかの権限を持つ DB しか表示しない
  • PostgreSQL: pg_database は全 DB が見えるが、CONNECT 権限がないと \c できない
  • SQL Server: sys.databases は権限のある DB のみ

FAQ

Q: SHOW DATABASES で見えるはずの DB が見えない
A: そのユーザーに権限がない。GRANT SELECT ON dbname.* TO 'user'@'%'; 等で付与するか、root で確認。

Q: PostgreSQL で「DB」と「スキーマ」が混乱する
A: PostgreSQL では DB > スキーマ > テーブルの階層。MySQL の「DB」は PostgreSQL の「スキーマ」に近い概念。

Q: 一覧に出ているがアクセスできない
A: 接続権限と読み取り権限は別。GRANT CONNECT ON DATABASEUSAGE ON SCHEMA を確認。