---
title: MySQL常用命令
date: 2018-03-26 22:30:39
description: "MySQL导入导出,查看线程等"
categories: "技术总结"
tags: [MySQL, Docker]
---
## MySQL 常用命令
- **查询数据库每张表的大小**
```sql
SELECT
TABLE_NAME AS '表名',
concat(
round(DATA_LENGTH / 1024 / 1024, 2),
'MB'
) AS '数据大小',
concat(
round(INDEX_LENGTH / 1024 / 1024, 2),
'MB'
) AS '索引大小',
TABLE_ROWS AS '数据条数',
concat(
round(
(DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024,
2
),
'MB'
) AS '总大小'
FROM
TABLES
WHERE
TABLE_SCHEMA = 'AAAA'
ORDER BY
(DATA_LENGTH + INDEX_LENGTH) DESC;
```
---
- **转换日志文件**
参考官网链接
```bash
mysqlbinlog -v --base64-output=DECODE-ROWS log_file > a.txt
./mysqlbinlog -v --base64-output=DECODE-ROWS -d efi --start-datetime="2009-04-12 12:00:00" --stop-datetime="2019-04-12 14:00:00" D:/mysql/mysql-bin.002715 > D:/mysql/20190412.txt
```
---
- **导入导出**
```sql
-- 导出
mysqldump -h主机 -P端口 -u用户名 -p密码 数据库名 > 文件名.sql
-- 导入
mysql -h主机 -P端口 -u用户名 -p密码 数据库名 < 文件名.sql
```
---
- **查看线程**
```sql
-- 可以解决数据库CPU占用过高的问题,根据看到的sql语句考虑加索引
show full processlist;
```
---
- **查看全局配置信息**
```sql
show global variables;
```
---
- **最大连接数**
```sql
-- 查看最大连接数
show variables like '%max_connections%';
-- 修改最大连接数
set global max_connections=1000;
```
- **查看编码**
```sql
show variables like '%char%';
```
---
- **Docker运行MySQL**
- 用户名密码是上面命令中的操作员用户名密码,不需要用root登录,默认操作员只能操作efi这个数据库
- 使用命名卷管理数据,保持宿主机清洁
```dockerfile
$ docker run --name mysql \
-d \
-p 3306:3306 \
-e MYSQL\_ROOT\_PASSWORD=rootpsw \
-e MYSQL\_USER=user \
-e MYSQL\_PASSWORD=userpsw \
-e MYSQL\_DATABASE=efi \
-v mysql:/var/lib/mysql \
mysql:5.7.18 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
```
---