- ローカルのDBへ接続
mysql -uUSER -pPASS MYDB
- 任意のホストのDBへ接続
mysql -uUSER -pPASS -hHOST MYDB
- ログファイルに書き出す
mysql -uUSER -pPASS --tee=update.log
- SQLを実行
mysql -uUSER -pPASS MYDB -e'select * from mytable'
- SSLで接続
mysql -uUSER -pPASS --ssl-ca=/etc/crt/mysql-ca.crt
プロンプト内での操作
- DBの切替
use MYDB
- インスタンス変数の確認
show global variables like '%timeout';
select @@global.max_allowed_packet;
- インスタンス変数の変更
set global wait_timeout=100;
- セッションの確認
show processlist;
- 実行処理全てを含むセッションの確認
show full processlist;
- マスターにてスレーブサーバの確認
show slave hosts;
- マスターにてポジションの確認
show master status;
- スレーブにてレプリケーション状態の確認
show slave status \G
- create table文の確認
show create table mytable;
- エンジンの一覧
show plugins;
DDL
- パスワードの変更
set password for root@localhost=PASSWORD('PASSWORD');
- 権限の付与
grant all on testdb.* to writer@localhost identified by 'XXXXXXXX';
grant all on testdb.* to writer@'192.168.0.%' identified by 'XXXXXXXX';
grant select on testdb.* to reader@localhost identified by 'YYYYYYYY';
grant select on testdb.* to reader@'192.168.0.%' identified by 'YYYYYYYY';
- SELECT INTO … OUTFILEやLOAD DATA INFILEの権限付与
※GLOBAL PRIVILEGESなのでDB単位での権限付与は不可。
grant file on *.* to writer;
- binlogの削除
purge binary logs to 'mysql-bin.000006';
- レプリを1つ進める
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
- 複数の索引を削除
ALTER TABLE test_data DROP INDEX ind1, DROP INDEX ind2, DROP INDEX ind3;
DML
*日付加算
SELECT ADDDATE(NOW(),-30);
- 時間の差分を取得
SELECT TIMEDIFF(end_date,start_date) FROM test_data WHERE TIMEDIFF(end_date,start_date)>'00:05:00';
- UNIXTIMEへの変換
SELECT UNIX_TIMESTAMP('2010-07-07 16:00:00');
- UNIXTIMEからの変換
SELECT FROM_UNIXTIME(start) FROM test_data;
- 日付フォーマット
SELECT DATE_FORMAT(NOW(),'%Y/%m/%d %H:%i:%s');
- データディクショナリの確認
use information_schema;
SELECT * FROM mytable WHERE table_schema='MYDB';
- 変数の使用
set @target_id=10000;
SELECT * FROM test WHERE id=@target_id;
- 行番号の付与
set @i=0;
SELECT @i:=@i+1 row,id FROM test_data limit 100;
- idを1から振り直す
set @i=0;
UPDATE test_data SET id=@i:=@i+1;
- ファイルへtsv出力
SELECT * FROM test_data INTO OUTFILE '/tmp/test.tsv';
- tsvファイルからデータロード
LOAD DATA INFILE '/tmp/test.tsv' INTO TABLE test_data;