MySQL の様子を調べるためのクエリ集
案件に途中から参画した時なんかに、既存の MySQL データベースの状態を調べるためのクエリをまとめておく。
目次
データベース一覧・切替・操作
以下でデータベース一覧を確認できる。
> SHOW databases;
mysql
・information_schema
・performance_schema
・sys
はデフォルトで存在するスキーマ (= データベース)。
指定のスキーマに切り替えるには USE
を使う。
> USE my_schema;
今どこのスキーマに繋いでいるか忘れたら、次のクエリで確認できる。
> SELECT database();
テーブル一覧・確認
テーブル一覧を確認するには次のクエリ。
# 全 DB の全テーブルと件数確認
> SELECT table_schema, table_name, table_rows FROM information_schema.tables;
# 一つの DB スキーマ内の全テーブルと件数を一覧表示する
> SELECT table_name, table_rows FROM information_schema.tables WHERE table_schema = '【スキーマ名】';
# 現在のスキーマのテーブル一覧
> SHOW tables;
各テーブルがどのような CREATE TABLE
文で作成されたかは、次のように確認できる。
> SHOW create table 【テーブル名】;
MySQL のバージョン確認
GRANT
構文の動作が違ったりする時は、MySQL のバージョンを確認しよう。version()
というシステム関数で確認できる。
> SELECT version();
接続ユーザ確認
現在接続しているユーザ名とホストを確認するには次のクエリ。
> SELECT user(), current_user(), session_user(), system_user();
基本的には user()
だけ見れば良い。current_user()
の表記は若干異なる。
現在の同時接続数を調べるには次のクエリ。
> SHOW status LIKE 'Threads_connected';
日本語が文字化けしていたら・文字コード確認
SELECT
結果に含まれる日本語が文字化けしていたら、サーバ・クライアントの文字コードを確認しよう。
> STATUS
> SHOW variables LIKE 'chara%';
DB 内の全テーブルの文字コードを確認するには以下。
> SHOW TABLE STATUS FROM 【DB 名】;
latin1
なんかだと日本語をうまく表示できないので、utf8mb4
になっているかどうかで見よう。
コンソールの文字コードを変更するには次のクエリを打つ。
> CHARSET utf8mb4;
ユーザ一覧・権限確認
作成されているユーザの一覧を見るには以下。
> SELECT host, user FROM mysql.user;
現在のユーザの権限を確認するには以下。
> SHOW grants;
他のユーザの権限を確認するには以下。シングルクォートの位置に注意 (@
をクォートで囲まない)。
> SHOW grants FOR 'my_user'@'localhost';
GRANT USAGE ON *.* TO
は、何の権限も設定されていないことを示している。
ユーザごとの権限を確認するための SQL 文を生成するには以下のようなクエリを打てば良い。
> SELECT CONCAT("SHOW grants FOR '", user, "'@'", host, "';") FROM mysql.user ORDER BY host, user;
# 以下のように SQL 文が列挙できるのでコレをそのまま使う
> SHOW grants FOR 'admin'@'%';
> SHOW grants FOR 'my_user'@'%';
時刻・タイムゾーン確認
現在時刻を確認する。
> SELECT now();
この結果を見ることで、MySQL のシステムがタイムゾーンをどのように認識しているか確認できる。
タイムゾーン設定自体を確認するには以下。
> SHOW variables LIKE '%time_zone%';
UTC
や JST
などと確認できる。
参考文献
- 【MySQL, SQL】データベースを扱う基本SQL一覧 - Qiita
- コンソールでのMySQLの文字化け – TauStation
- MySQL :: MySQL 5.6 リファレンスマニュアル :: 21.22 INFORMATION_SCHEMA TABLES テーブル
- AWS Auroraでダンプしたデータをmysqlにインポートしようとしたらはまった - Qiita
- MySQL ユーザのホストをワイルドカードで指定してもlocalhostは含まれない | b.l0g.jp
- ユーザーに権限を設定する(GRANT文) | MySQLの使い方
- AWS Aurora MySQL5.7互換の文字コードをutf8mb4に変更 - Qiita
- AWSのRDS(mysql)のタイムゾーンをAsia/Tokyoに変更する - Qiita
- MySQLのバージョン確認方法 - Qiita
- システム関数 : MySQL関数リファレンス
- MySQL8.0ではGRANT構文でユーザを作成できない – guro_chanの手帳
- MySQLで全テーブルのレコード数を一覧表示する - Qiita
- 【MySQL】テーブルの文字コードを調べる at softelメモ