MySQL 相关命令

查看数据库大小

1
2
3
4
5
6
7
8
#进去指定 schema 数据库(存放了其他的数据库的信息)
use information_schema;
#查询所有数据的大小
SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024), 2), 'MB') AS data FROM TABLES;
#查看指定数据库实例的大小, 比如说数据库 test
SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024), 2), 'MB') AS data FROM TABLES WHERE table_schema='test';
#查看指定数据库的表的大小, 比如说数据库 test 中的 user 表
SELECT CONCAT(ROUND(SUM(DATA_LENGTH/1024/1024), 2), 'MB') AS data FROM TABLES WHERE table_schema='test' AND table_name='user';

查看表碎片

1
2
3
4
SHOW TABLE STATUS from yiyuansha like 'yys_shangpin'\G
Data_free 字段大于 0, 就表示有碎片
(1)InnoDB 整理碎片, 使用 ALTER TABLE table_name ENGINE=INNODB; 会删除旧表, 并 重新导入数据, 重新建立索引
(2)MyISAM 整理碎片, 使用 OPTIMIZE TABLE table_name;

binlog

1
2
3
4
5
6
7
8
9
10
11
12
mysqlbinlog -vv --base64-output=decode-rows --start-datetime="2020-03-24 18:40:00" --stop-datetime="2020-03-24  19:00:00" "D:\mysql-bin.000536" | grep -i "keyword" -A 10 -B 10 > "D:\test.sql"

grep命令常用参数说明
参数 说明
-A 除了显示符合条件的那一行之外,并显示该列之后的指定行的内容内容。
-B 除了显示符合条件的那一行之外,并显示该列之前的指定行的内容内容。
-c 计算符合结果的行数。
-i 忽略字符大小写
-v 反向查找
-e 按指定字符串查找
-E 按指定字符串指定的正则查找
-n 在显示符合条件的那一行前,标识出该行的行数标号。

MySQL 5.7 数据库用户授权

1
2
3
4
5
6
7
8
9
10
11
# 1.使用 root 管理员登陆 mysql
# 2.创建数据库
CREATE DATABASE test;
# 3.创建新用户 ( % 所有情况都能访问, localhost 本机才能访问, 111.222.33.44 指定IP 才能访问)
CREATE USER '用户名'@'%' IDENTIFIED BY '密码';
# 4.给该用户添加权限
GRANT ALL PRIVILEGES on 数据库名.* to '用户名'@'%';
# 5.删除用户
DELETE FROM mysql.user WHERE User='用户名';
# 6.刷新权限
FLUSH PRIVILEGES;
0%