よく使うMySQLのコマンドをまとめた

普段がPostgreSQLなので、書き出しておかないとこの程度のコマンドも不自由するんだな。

1. 接続

//接続
$ mysql -u xxxx -p yyyy
$ mysql -u xxxx -p -h 127.0.0.1 yyyy

 -u xxxx
  MySQL のユーザ名を指定する。
  xxxx としてログインする。
 -p
  パスワード入力を求めるオプション。
  パスワードをそのまま書く -pPASSWORD も可能だが非推奨。
 -h 999.999.999.999
  サーバ
 yyyy(最後の引数)
  接続後に自動で接続するデータベース名
  USE yyyy; を実行した状態で MySQL に入れる。

//切断
> \q

//接続データベース( ≒スキーマ)の変更
> USE yyyy;

2. 確認コマンド

//バージョン確認
$ mysql --version

//データベース( ≒スキーマ)一覧
> SHOW DATABASES;

//テーブル一覧
> SHOW TABLES;              //接続中のデータベース
> SHOW TABLES FROM yyyy;    //データベースを指定

//テーブル構造確認
> DESCRIBE tttt;
> SHOW COLUMNS FROM tttt;

//インデックス一覧
> SHOW INDEX FROM tttt;

//シーケンス一覧
MySQLには SEQUENCE がない!!!!

//カレントユーザ確認
> SELECT CURRENT_USER();

//権限確認
> SHOW GRANTS FOR 'xxxx';

//現在のDB・接続情報表示
> status

//現在のクエリ実行中一覧
> SHOW PROCESSLIST;

3. クエリ実行

//ファイルから実行
> source file.sql
> \. file.sql
$ mysql db < file.sql

//CSV出力
> SELECT ... INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ',';

//縦表示
> select * from m_category; //通常
+------+----------------------+------------+
| m_id |  created_at          | deleted_at |
+------+----------------------+------------+
|    1 |  2021-11-09 06:41:54 | NULL       |
|    2 |  2021-11-09 06:41:54 | NULL       |
|    3 |  2021-11-09 06:41:54 | NULL       |
+------+----------------------+------------+

> select * from m_category \G  //縦
************ 1. row ************
m_id      : 1
created_at: 2021-11-09 06:41:54
deleted_at: NULL
************ 2. row ************
m_id      : 2
created_at: 2021-11-09 06:41:54
deleted_at: NULL
************ 3. row ************
m_id      : 3
created_at: 2021-11-09 06:41:54
deleted_at: NULL

4. バックアップ・レストア

//全DBバックアップ
$ mysqldump --no-tablespaces --all-databases > dump.sql

//単一DBバックアップ
$ mysqldump --no-tablespaces -u xxxx -p -h 127.0.0.1 yyyy > mysqldump_xxxx_20250101.sql

//リストア
$ mysql -u xxxx -p yyyy < mysqldump_xxxx_20250101.sql

 -u xxxx
  MySQL のユーザ名を指定する。
  xxxx としてログインする。
 -p
  パスワード入力を求めるオプション。
  パスワードをそのまま書く -pPASSWORD も可能だが非推奨。
 -h 999.999.999.999
  サーバ
 yyyy(最後の引数)
  接続後に自動で接続するデータベース名
  USE yyyy; を実行した状態で MySQL に入れる。