MySQLの便利コマンド


■MySQL便利コマンド

  ◆mysqlログインにページングオプションを付ける
    例:mysql --pager='less -S' -u user -ppassword -h host

  ◆ターミナル上でSQL文の編集
    環境変数EDITORで設定しているエディタが起動する。
    ⇒editまたは\e
    ⇒編集後、『;』で実行

  ◆ターミナル上のSQL結果を改行させない
    ・SQL分のあとに\Gを付ける
    例:select * from table_name\G;

    ・mysqlログインにページングオプションを付ける
    例:mysql --pager='less -S' -uユーザー名 -pパスワード -hホスト名

  ◆MySQLのホスト名確認
    select @@hostname;

  ◆SQL文のタブ区切り出力
    ⇒mysql -uユーザー名 -pパスワード -hホスト名 データベース名 --default-character-set=文字コード -s -e "select * from xxxxx" > xxxxx.tsv
    ⇒カラム名出力 :mysql -umoriver5 -p moriver5 -e "select mail,id from user_prof" > nishizawa.txt
    ⇒カラム名なし  :mysql -umoriver5 -p moriver5 -s -e "select mail,id from user_prof" > nishizawa.txt

  ◆WHERE句をつけ忘れたSQL文の実行
    ⇒--safe_updatesを付加してmysqlにログイン
    ⇒例:/usr/local/mysql/bin/mysql --safe_updates -umoriver5 -p

  ◆SQL文に実行結果を見やすく表示
    ⇒SQL文の後に『\G』を付加する
    ⇒例:select * from user_prof \G;

  ◆接続照合設定
    ・クライアントからサーバーへSQL文を送信する場合の文字コード
     ⇒クライアントから送信されるSQLステートメントの文字コードがなんであるかサーバーに通知する。
     サーバーはcharacter_set_clientシステム変数値をそのままクライアントの送るステートメントのキャラクタセットにします。

     設定の仕方
     ⇒SET NAMES 文字コード;
     ⇒SET NAMES 文字コードは下記と等価です
     SET character_set_client = 文字コード;(クライアントからはここで設定した文字コードで送られる)
     SET character_set_results = 文字コード;(ここで設定した文字コードでクライアントに返送)
     SET character_set_connection = 文字コード;(クライアントから送られてきたステートメントをここで設定した文字コードで変換される)

    ・サーバーからクライアントへSQL文結果を送信する場合の文字コード
     ⇒クライアントにSQL文結果を返信する際、サーバーが使用するべき文字コードの設定

     設定の仕方
     ⇒SET CHARACTER SET 文字コード
     ⇒SET CHARACTER SET 文字コードは下記と等価です
     SET character_set_client = 文字コード;
     SET character_set_results = 文字コード;
     SET collation_connection = @@collation_database;

  ◆インデックス関連
  ・インデックスの確認⇒show index from テーブル名
  ・インデックスの削除⇒alter table テーブル名 drop index インデックス名

  ◆テーブルを作成して他のテーブルからデータ抽出してインサートするSQL
  ・create table テーブル名1 select * from テーブル名2 where 条件指定;

  ◆MySQLのユーザー作成
  ・CREATE USER 'your_name'@'localhost' IDENTIFIED BY 'your_password';

  ◆MySQLのユーザー作成後、データベースの権限設定
  ・GRANT ALL PRIVILEGES ON database_name.* TO 'your_name'@'localhost';

  ◆MySQLのユーザーパスワード変更
  ・SET PASSWORD FOR ユーザ名@"ホスト名"=password('変更後のパスワード');

  ◆MySQLのユーザー削除
  ・DELETE FROM mysql.user WHERE user='ユーザ名';

  ◆MySQLのユーザー権限削除
  ・REVOKE ALL PRIVILEGES ON * . * FROM ユーザー名;

  ◆MySQLの権限の再読み込み
  ・FLUSH PRIVILEGES;