トップ   編集 凍結 差分 バックアップ 添付   新規   最終更新のRSS

mysql/コマンド

Last-modified: 2010-02-16 (火) 16:19:27 (23d)
Top / mysql / コマンド

よく使うけどすぐ忘れるmysqlコマンド

mysqlコマンド

遠隔マシンのmysqlに接続する

# mysql -u ユーザー名 -p -h サーバーURL DB名

mysqlに接続してSQLを実行する

# mysql -u ユーザー名 -p -B DB名 --execute="select count(*) from dtb_customer"

ファイルに記述されたsql文を実行する

# mysql -u ユーザー名 -p < ファイル名

ファイルに記述されたsql文を実行して、結果をファイルに出力する

# mysql -u ユーザー名 -p < SQLが書いてあるファイル名 > 結果出力ファイル名

mysqlコマンドクイック・リファレンス

http://www.bitscope.co.jp/tep/MySQL/quickMySQL.html

mysql運用時の備忘録

データディレクトリを確認する。

mysql> show variables like "data%";
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+

上記のコマンドで表示されたデータディレクトリに、各データベースの実データが入っている。
rpmコマンドを使用してmysqlをアンインストールしたとき、データディレクトリのファイルが削除されないことがある。

テーブル定義の確認

mysql> show create table テーブル名\G
mysql> desc テーブル名\G

インデックスの確認

mysql> show index from テーブル名\G

データベースの文字コードを確認

mysql> show create database データベース名;

テキストファイルに記述されたsql文を実行

mysql > source ファイルパス

mysqlクライアントで文字化けした場合

  • 現状確認
mysql> status;

Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    latin1
Conn.  characterset:    latin1
  • Client charactersetがlatin1になっているので、これをutf8に変える
mysql> set character set utf8;
  • 確認
mysql> status;

Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8

処理に時間がかかるクエリを強制終了させたいとき

  • 時間がかかっているクエリの確認
mysql> show processlist\G
*************************** 1. row ***************************
     Id: 13018
   User: root
   Host: localhost
     db: db_hoge
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
*************************** 2. row ***************************
     Id: 13036
   User: root
   Host: localhost
     db: db_hoge
Command: Query
   Time: 184
  State: Copying to tmp table
   Info: insert into hoge_table name (col1,col2) values (1,2)
2 rows in set (0.00 sec)
  • プロセスのkill
mysql> kill 13036;

mysqlシステム変数の表示

# mysqladmin -u root variables -p

mysqlにconnectしてshow variablesでも参照可能

mysql> show variables;

mysqlのデフォルト文字コードをUTF8にしたいとき

  1. /etc/my.cnfの[mysqld]のところに default-character-set=utf8 を追加
  2. mysql再起動

サーバーが起動しているか確認する

# mysqladmin ping -u ユーザー名 -p
mysqld is alive

mysqld is aliveが返ってくれば起動されている

alter table を実行する際の注意点

alter tableを実行している間、そのテーブルはロックされるので注意。
selectはできるが、insert、updateはできない
30万行のデータにindexを追加するのに2分くらいかかった。

CSVファイルのやりとり

SQLの結果をタブ区切りのテキストに出力する

mysql> SELECT * INTO OUTFILE '/tmp/test.csv' FROM テーブル名

テキストに出力したデータをテーブルにinsertする

mysql> LOAD DATA LOCAL INFILE '/tmp/test.csv' INTO TABLE テーブル名

カンマ区切りのcsvデータをインポート

mysql> LOAD DATA LOCAL 
INFILE '/tmp/test.csv' INTO TABLE テーブル名 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 
LINES TERMINATED BY '\r\n' ;

SQLの結果をcsvファイルに出力する

mysql> 
SELECT * INTO OUTFILE '/tmp/test.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"' 
ESCAPED BY '\\'
character set cp932
LINES TERMINATED BY '\r\n'
FROM table_name;

出力ファイルの所有者はmysqlユーザーになるため、ログインユーザーの権限によっては出力後にファイルの読み取りしかできなくなることがあるので注意

mysqldump データベースのバックアップ

データベースのフルバックアップ

# mysqldump -u ユーザー名 -p データベース名 > dump.sql

データベースのフルバックアップ バックアップ中にロックしない

# mysqldump -u ユーザー名 -p データベース名 --opt --skip-lock-tables > dump.sql

テーブル名を指定してバックアップ

# mysqldump -u ユーザー名 -p データベース名 テーブル1 テーブル2・・・ > dump.sql

テーブル定義のみバックアップ

# mysqldump -u ユーザー名 データベース名 -d > dump.sql

mysqldumpでバックアップしたデータの復元

# mysql -u ユーザー名 -p データベース名 < ファイル名

alter table

列名を変更せずに型、場所を変更

alter table テーブル名 modify column カラム名 型 not null default デフォルト値 after 移動したいカラム名;

列変更

alter table テーブル名 change column 古いカラム名 新しいカラム名 型 not null default デフォルト値;

列追加

alter table テーブル名 add column カラム名 型 not null default デフォルト値 after 追加する場所

列削除

alter table テーブル名 drop column カラム名;

index追加

alter table テーブル名 add index インデックス名 (カラム名);

tips

mysqlクライアントの出力結果を縦方向にする

sqlの区切り文字は;(コロン)ですが、代わりに¥Gと入力すると出力結果が縦方向になります。

mysql> select * from テーブル名\G
*************************** 1. row ***************************
  id: 1
name: 名前です
1 row in set (0.00 sec)

mysqlクライアントのコマンド入力途中でキャンセル

\c

sql等を入力中に、\cと入力すると、mysql> に戻ります

コマンド実行中に抜ける

ctrl + c + c
  編集