mysql cmd

vagrant で全権限

CREATE USER vagrant;
SET PASSWORD FOR vagrant@"%"=PASSWORD('vagrant');
GRANT ALL PRIVILEGES ON *.* TO 'vagrant'@'%';
FLUSH PRIVILEGES;

文字コード

show variables like "chara%";

user作成。

CREATE USER [user];
SET PASSWORD FOR [user]@"%"=PASSWORD('[pass]');

パスワード変更。

SET PASSWORD FOR [user]@"%"=PASSWORD('[pass]');

user削除。

DROP USER user;

登録されているuser確認。

use mysql;
SELECT user, host FROM user;

rootユーザのアクセス許可hostに127.0.0.1を追加する

use mysql;
grant all privileges on *.* to root@"127.0.0.1" identified by 'root_pass' with grant option;
FLUSH PRIVILEGES;

権限表示

SHOW GRANTS for 'hoge'@'%';

全ての権限を付ける。

GRANT ALL PRIVILEGES ON `DB名`.テーブル TO 'ユーザ名'@'ホスト名';

SELECT,UPDATE,INSERT,DELETEの権限を付ける。

GRANT SELECT,UPDATE,INSERT,DELETE ON `DB名`.テーブル TO 'ユーザ名'@'ホスト名';

権限の反映

FLUSH PRIVILEGES;

テーブル内のデータ量を調べる

1
2
3
4
5
6
7
8
9
10
use databaseName;
select 
table_name, engine, table_rows as tbl_rows,
avg_row_length as rlen,
floor((data_length+index_length)/1024/1024) as allMB,
floor((data_length)/1024/1024) as dMB,
floor((index_length)/1024/1024) as iMB
from information_schema.tables
where table_schema=database()
order by (data_length+index_length) desc;

テーブルデータを消す
MySQLにて大量のデータのDELETEが重い。
過半数をDELETEするような場合には、必要な物だけを入れた別のテーブル作成するという方法もあります。

1. nodeテーブルの構造(インデックス含む)を別名で複製
CREATE TABLE node_tmp LIKE node;
2. 空のnode_tmpに必要なデータを流し込む
INSERT INTO node_tmp ~~
3. ダウンタイムがないよう、1クエリでテーブルの差し替えを行う
RENAME TABLE node TO node_old, node_tmp TO node;
4. 不要となったテーブルを削除
DROP TABLE node_old

mysql> select ip, count(ip) from iptable WHERE time>=DATE_SUB(CURRENT_DATE(),interval 0 day) group by ip ORDER BY count(ip) DESC limit 5;                        
 
mysql> select ip, count(ip) from iptable WHERE time>=DATE_SUB(CURRENT_DATE(),interval 1 day) and time<=DATE_SUB(CURRENT_DATE(),interval 0 day) group by ip ORDER BY count(ip) DESC limit 5;

足跡

前日の
select count(*) from iptable WHERE time>=DATE_SUB(CURRENT_DATE(),interval 1 day) and time<=DATE_SUB(CURRENT_DATE(),interval 0 day);
 
今日の
select * from iptable WHERE time>=DATE_SUB(CURRENT_DATE(),interval 0 day);