MySQL 数据库核心操作指南
在数据库管理中,MySQL 作为开源关系型数据库的标杆,其基础操作是所有开发者和运维人员的必备技能。本文将从数据库的创建、编码配置、查看修改,到备份恢复与连接监控,逐步拆解核心操作,结合实操命令与原理讲解,帮你彻底掌握 MySQL 基础管理逻辑。
MySQL 数据库基础管理涵盖创建、编码配置、查看修改、删除及备份恢复。重点包括使用 IF NOT EXISTS 安全创建库,理解字符集与校验集对数据存储和查询的影响,掌握 mysqldump 工具进行全库或单表备份,以及通过 processlist 监控连接状态。操作需注意生产环境备份策略及编码一致性,避免乱码和数据丢失风险。

在数据库管理中,MySQL 作为开源关系型数据库的标杆,其基础操作是所有开发者和运维人员的必备技能。本文将从数据库的创建、编码配置、查看修改,到备份恢复与连接监控,逐步拆解核心操作,结合实操命令与原理讲解,帮你彻底掌握 MySQL 基础管理逻辑。
创建数据库是 MySQL 操作的起点,掌握其语法规则与底层原理,能避免后续使用中的诸多问题。
MySQL 创建数据库的标准语法如下,其中 [ ] 内的关键字为可选参数,用于提升操作安全性:
CREATE DATABASE [IF NOT EXISTS] database_name;
IF NOT EXISTS:关键安全参数。若数据库已存在,不加此参数会直接报错;添加后会将报错转为警告,避免程序执行中断。CREATE DATABASE)大写,表名 / 库名小写,方便代码阅读。登录 MySQL 客户端后,执行以下命令创建名为 db1 的数据库(推荐带 IF NOT EXISTS):
mysql> create database if not exists db1;
在 Linux 系统中,MySQL 数据库的本质是 /var/lib/mysql 目录下的子目录。创建 db1 后,可通过 Linux 命令查看其物理结构:
# 进入 MySQL 数据存储根目录
cd /var/lib/mysql
# 查看 db1 目录内容
ls -l db1/
此时会发现 db1 目录下仅有一个 db1.opt 文件,该文件是数据库的配置文件,存储着默认的字符集(character)和校验集(collation)信息,这两个配置直接影响后续数据的存储与查询。
数据库编码决定了数据如何存储(字符集)和如何比对查询(校验集),配置不当会导致乱码或查询结果异常,必须重点理解。
utf8、gbk,决定了数据库能支持哪些语言的字符(如 utf8 支持多语言,gbk 仅支持简体中文)。utf8 对应 utf8_general_ci 和 utf8_bin)。要了解当前 MySQL 的编码环境,可通过以下命令查看所有与编码相关的系统变量:
# 查看所有字符集相关变量
show variables like 'character_%';
# 查看所有校验集相关变量
show variables like 'collation_%';
# 查看当前数据库的默认编码(需先 use 指定数据库)
show variables like 'character_set_database';
show variables like 'collation_database';
like 'xxx_%':% 是 MySQL 中的通配符,匹配任意多个字符,此处用于筛选所有以 character_ 或 collation_ 开头的变量。my.cnf(Linux)或 my.ini(Windows)中的 default-character-set 参数决定,通常默认是 utf8 和 utf8_general_ci。通过以下命令可查看 MySQL 支持的所有字符集和校验集:
# 查看所有支持的字符集
show charset;
# 查看所有支持的校验集(结果较多,可结合 grep 筛选)
show collation;
关键字符集对比:
| 字符集 | 支持语言 | 适用场景 |
|---|---|---|
| utf8 | 多语言(含中文) | 通用场景(推荐) |
| gbk | 仅简体中文 | 纯中文业务,节省存储空间 |
| latin1 | 西欧语言 | 仅英文场景 |
创建数据库时,可手动指定字符集和校验集,覆盖系统默认配置。语法如下(| 表示可选写法):
CREATE DATABASE [IF NOT EXISTS] database_name [CHARSET=xxx | CHARACTER SET xxx] [COLLATE xxx];
创建字符集为 gbk、校验集为 gbk_chinese_ci 的数据库 db2:
# 两种写法等价
mysql> create database if not exists db2 charset=gbk collate gbk_chinese_ci;
mysql> create database if not exists db2 character set gbk collate gbk_chinese_ci;
charset=gbk),MySQL 会自动匹配该字符集的默认校验集(gbk_chinese_ci);反之只指定校验集,也会自动推导对应的字符集。charset=utf8 搭配 collate=gbk_chinese_ci),会直接报错,确保编码逻辑一致性。不同校验集的查询规则差异,会直接导致相同查询语句返回不同结果。以下通过 utf8_general_ci(不区分大小写)和 utf8_bin(区分大小写)对比演示:
# 1. 创建校验集为 utf8_general_ci 的数据库 test1
mysql> create database if not exists test1 collate utf8_general_ci;
mysql> use test1;
mysql> create table t (name varchar(32));
mysql> insert into t values ('a'),('A'),('b'),('B');
# 2. 创建校验集为 utf8_bin 的数据库 test2
mysql> create database if not exists test2 collate utf8_bin;
mysql> use test2;
mysql> create table t (name varchar(32));
mysql> insert into t values ('a'),('A'),('b'),('B');
# 1. 在 test1 中查询 name='a'
mysql> use test1;
mysql> select * from t where name='a';
# 结果:返回 'a' 和 'A'(不区分大小写)
# 2. 在 test2 中查询 name='a'
mysql> use test2;
mysql> select * from t where name='a';
# 结果:仅返回 'a'(区分大小写)
结论:需根据业务场景选择校验集 —— 如用户名查询需区分大小写则用 utf8_bin,普通内容搜索无需区分则用 utf8_general_ci(默认)。
在管理过程中,需频繁查看数据库信息或调整配置,以下是核心操作。
mysql> show databases;
也可通过 Linux 命令直接查看 /var/lib/mysql 目录下的子目录,结果与上述命令一致:
ls -l /var/lib/mysql/
通过 database() 函数可快速确认当前操作的数据库:
mysql> select database();
需了解某个数据库的创建语法(含编码配置)时,使用 show create database,加 \G 可格式化输出,更易阅读:
# 查看 test2 的创建详情
mysql> show create database test2;
# 格式化输出(推荐)
mysql> show create database test2 \\G
输出结果中,/*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_bin */ 是兼容性语法:表示若 MySQL 版本高于 4.1(当前主流版本均满足),则启用该编码配置;否则忽略,避免老版本报错。
数据库修改需谨慎,尤其是名称和编码,可能影响上层应用。
MySQL 5.1.23 版本后已移除 RENAME DATABASE 语法(安全风险高):
# 过时语法,当前版本不支持
RENAME DATABASE old_name TO new_name;
若需更名:推荐'备份旧库→创建新库→导入数据'的流程,避免直接更名导致的应用连接失败。
语法如下,可修改数据库的字符集和校验集:
ALTER DATABASE database_name [alter_specification...];
示例:将 test2 的编码从 utf8/utf8_bin 改为 gbk/gbk_chinese_ci:
mysql> alter database test2 charset=gbk collate gbk_chinese_ci;
数据库删除是不可逆操作,需严格遵循安全流程,避免误删。
DROP DATABASE [IF EXISTS] database_name;
IF EXISTS:关键安全参数。若数据库不存在,不加此参数会报错;添加后转为警告。/var/lib/mysql 下对应的目录及所有子文件(含表数据),且无法通过常规手段恢复。# 安全删除 db1(带检查)
mysql> drop database if exists db1;
mysqldump 备份数据(下文详解)。数据备份是数据库运维的核心,MySQL 提供 mysqldump 工具实现灵活备份,支持全库、单表、多库备份。
mysqldump 是 MySQL 自带的逻辑备份工具,通过生成 SQL 语句文件实现备份,语法如下(在 Linux 终端执行,非 MySQL 客户端):
mysqldump -u 用户名 -p -P 端口 [选项] 数据库名 [表名 1 表名 2...] > 备份文件路径
-u:指定 MySQL 用户名(如 root)。-p:提示输入密码(不建议直接在命令后写密码,避免泄露)。-P:指定 MySQL 端口(默认 3306,可省略)。-B:备份数据库时,包含'创建数据库'语句,恢复时可直接执行。备份 test2 数据库,生成 test2.sql 文件至 /home/backup/ 目录:
mysqldump -u root -p -B test2 > /home/backup/test2.sql
执行后输入 MySQL 密码,备份文件会包含 CREATE DATABASE 和 CREATE TABLE 语句,以及数据插入语句。
备份 test2 中的 t 表,无需加 -B:
mysqldump -u root -p test2 t > /home/backup/test2_t.sql
同时备份 test1 和 test2:
mysqldump -u root -p -B test1 test2 > /home/backup/test1_test2.sql
恢复需在 MySQL 客户端中执行,核心语法为 SOURCE,需注意备份文件是否包含'创建数据库'语句。
-B 备份)直接执行备份文件即可,无需提前创建数据库:
# 登录 MySQL 后执行
mysql> source /home/backup/test2.sql;
需先创建数据库并切换,再恢复表数据:
# 1. 创建并切换到目标数据库
mysql> create database if not exists test2;
mysql> use test2;
# 2. 恢复表数据
mysql> source /home/backup/test2_t.sql;
MySQL 支持多用户同时连接,需掌握连接监控与异常连接终止的方法,保障数据库性能。
show processlist快速查看当前所有连接的基本信息(ID、用户、数据库、执行语句):
mysql> show processlist;
查看完整连接信息(含连接时间、状态):
mysql> select * from information_schema.processlist;
通过 Threads_% 相关变量,统计连接总数、活跃连接数:
mysql> show status like 'Threads_%';
Threads_connected:当前总连接数。Threads_running:当前活跃连接数(正在执行 SQL 的连接)。若某连接长期占用资源(如执行慢查询),可通过 KILL 终止:
# 1. 先通过 show processlist 获取连接 ID(如 ID=10)
# 2. 终止连接
mysql> KILL CONNECTION 10;
MySQL 默认最大连接数为 151,若业务需要可动态调整(重启后失效,需在 my.cnf 中配置永久生效):
# 查看当前最大连接数
mysql> show variables like 'max_connections';
# 动态修改为 200(重启后恢复默认)
mysql> set global max_connections = 200;
MySQL 数据库的基础管理围绕'创建 - 配置 - 查看 - 备份 - 连接'展开,核心在于:
utf8)和校验集(如区分大小写用 utf8_bin),避免乱码和查询异常。IF NOT EXISTS,删除前必须备份,避免不可逆损失。mysqldump 实现全库 / 单表备份,通过 SOURCE 快速恢复,保障数据安全。掌握这些基础操作,是后续学习 MySQL 索引优化、事务管理、高可用架构的前提,也是保障业务稳定运行的核心能力。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online
解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL 转 CSV/JSON/XML在线工具,online
CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML 转 Markdown 互为补充。 在线工具,Markdown 转 HTML在线工具,online