ようへいの日々精進XP

よかろうもん

MySQL 小ネタ

はじめに

  • 最近、MySQL 漬けで色々と勉強になることがあったのでメモ

メモ(1)

!includedir とか !include

参考はこちら

以前から my.cnf とか同じ階層に conf.d というディレクトリがあって何に使うんだろうと思いながら過ごしてきたけど、*.cnf拡張子conf.d に放り込んで my.cnf に以下のように書いておけばそれらを読んでくれる。

[mysqld]
!includedir /path/to/conf.d/

上記の場合、[mysqld] でのみ !includedir /path/to/conf.d/ が適用される。また、my.cnf の末尾に...

!include /path/to/hogehoge.cnf

と設定すれば MySQL 全体の挙動に /path/to/hogehoge.cnf の設定が適用されるとのこと。


メモ(2)

mytop で色々と捗る

大きなレコードを読み込ませたい時とかその進捗をどのように確認するか悩みどころで...毎回、別の端末を起動して MySQL にログインして show processlist していたが mytop なるツールがあったので試してみた。mytop はその名の通り top コマンドの MySQL 版。

Debian 系の場合には以下のようにインストールする。

apt-get install mytop

起動は mytop -uroot -p ${your_password} で以下のように出力される。

f:id:inokara:20140208052621p:plain

これで進捗を見ながら並行して作業が出来たりして色々と捗る。


メモ(3)

データベースごとに割り当てられた権限を確認する

以下のような GRANT 文を使ってユーザーを作成した場合...

 GRANT USAGE on *.* TO username@'localhost' IDENTIFIED BY 'password';
 GRANT SELECT ON  hoge.* TO 'username'@'localhost';
 FLUSH PRIVILEGES;

SELECT * FROM user WHERE user='username' でユーザーの権限を確認すると...

f:id:inokara:20140208055620p:plain

全ての権限が N となっている。「あれっ? hoge データベースに対する SELECT 権限は?」という疑問にぶつかるが、データベースに対する権限は以下のようにして確認する。

SELECT * FROM db WHERE Db='hoge'\G

以下のように出力されて hoge データベースに対する権限について確認することが出来る。

f:id:inokara:20140208060727p:plain

なるほど、なるほど。


メモ(4)

データベースの各テーブル件数をサクッと知りたい

データベースの各テーブル件数をサクッと知りたい場合には以下のようなクエリを投げるとザックリとした件数を得られることが出来る。

SELECT table_name, table_rows FROM information_schema.TABLES WHERE table_schema = '${DB_NAME}';

例えば、MySQL をインストール直後の mysql データベース等を確認してみる。

SELECT table_name, table_rows FROM information_schema.TABLES WHERE table_schema = 'mysql';

以下のように結果が出力される。

+---------------------------+------------+
| table_name                | table_rows |
+---------------------------+------------+
| columns_priv              |          0 |
| db                        |          2 |
| event                     |          0 |
| func                      |          0 |
| general_log               |          2 |
| help_category             |         39 |
| help_keyword              |        464 |
| help_relation             |       1028 |
| help_topic                |        508 |
| host                      |          0 |
| ndb_binlog_index          |          0 |
| plugin                    |          0 |
| proc                      |          0 |
| procs_priv                |          0 |
| proxies_priv              |          2 |
| servers                   |          0 |
| slow_log                  |          2 |
| tables_priv               |          0 |
| time_zone                 |          0 |
| time_zone_leap_second     |          0 |
| time_zone_name            |          0 |
| time_zone_transition      |          0 |
| time_zone_transition_type |          0 |
| user                      |          7 |
+---------------------------+------------+
24 rows in set (0.02 sec)

ほうほう。データ移行した後等でざっくりと件数の比較をする時等に使えそう。


Coming Soon...


最後に

  • 本当に小ネタ
  • また、すぐに忘れてしまうんやろーなー