跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
SQL

MySQL 数据库核心操作:创建、修改、备份与连接排查

综述由AI生成MySQL 数据库操作涵盖创建、修改、删除及备份恢复等核心流程。文章详解了字符集与校验规则的配置差异,展示了 mysqldump 工具的多场景备份用法及 source 命令恢复步骤,并结合 show processlist 提供了连接排查与性能优化的实战技巧。重点强调了 IF NOT EXISTS、-B 参数等关键细节,旨在帮助开发者规范操作,规避常见风险。

全栈工匠发布于 2026/3/24更新于 2026/6/714 浏览
MySQL 数据库核心操作:创建、修改、备份与连接排查

前言

在 MySQL 的实战中,数据库(库)的操作是基础且核心的环节。无论是项目开发还是运维维护,库的创建、配置、修改、备份等一系列操作都绕不开。很多开发者容易在字符集、校验规则、备份恢复这些细节上踩坑,本文结合实战案例,把 MySQL 库的全套操作讲透。

一、创建数据库:基础语法与个性化配置

创建数据库看似简单,但字符集和校验规则的配置直接影响后续开发。官方语法如下,其中大写部分为关键字,中括号内为可选项:

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...]; 

create_specification用于配置核心属性,主要包含两项:

[DEFAULT] CHARACTER SET charset_name; -- 指定数据库字符集
[DEFAULT] COLLATE collation_name; -- 指定字符集的校验规则

这里有两个关键细节建议注意:

  • IF NOT EXISTS:可选但建议必加,避免创建已存在的数据库时抛出错误,让 SQL 更健壮。
  • DEFAULT 关键字:可省略,不影响功能,写出来会让语法更清晰,明确是设置默认属性。

实际开发中通常分三种场景:

  1. 使用系统默认配置:不指定字符集和校验规则,MySQL 会使用默认的 utf8 和 utf8_general_ci。
    CREATE DATABASE db1;
    
  2. 指定字符集:通过 charset 关键字指定,校验规则沿用该字符集默认值。
    CREATE DATABASE db2 CHARSET=utf8;
    
  3. 同时指定字符集和校验规则:针对有特殊需求的场景(比如区分大小写查询)。
    CREATE DATABASE db3 CHARSET=utf8 COLLATE utf8_general_ci;
    

二、字符集与校验规则:核心配置

字符集决定了能存储哪些语言的字符,校验规则则决定数据的查询和排序规则。乱码或查询结果不符合预期,根源往往在这两个配置。

1. 查看默认配置

开发前建议先查询当前 MySQL 的默认配置:

SHOW VARIABLES LIKE 'character_set_database';
SHOW VARIABLES LIKE 'collation_database';

2. 查看所有支持的字符集和校验规则

根据需求选择,主流推荐 utf8:

SHOW CHARSET;
SHOW COLLATION;

3. 校验规则的实际影响

最典型的是 utf8_general_ci(不区分大小写)和 utf8_bin(区分大小写)的区别。

案例 1:不区分大小写 (utf8_general_ci)

CREATE DATABASE test1 COLLATE utf8_general_ci;
USE test1;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person VALUES('a'),('A'),('b'),('B');
SELECT * FROM person WHERE name='a';

查询 name='a' 时,会同时返回 a 和 A;排序也不区分大小写。

案例 2:区分大小写 (utf8_bin)

CREATE DATABASE test2 COLLATE utf8_bin;
USE test2;
CREATE TABLE person(name VARCHAR(20));
INSERT INTO person VALUES('a'),('A'),('b'),('B');
SELECT * FROM person WHERE name='a';

查询 name='a' 时,只返回 a;排序时大写字母排在前面。

结论:用户信息等需要区分大小写的场景用 utf8_bin,普通业务数据建议 utf8_general_ci。

三、操纵数据库:查看、修改、删除

日常操作主要包括查看信息、修改配置、删除无用库。

1. 查看数据库

  • 查看所有数据库:
    SHOW DATABASES;
    
  • 查看指定库的创建语句:了解详细配置(如字符集)。
    SHOW CREATE DATABASE mytest;
    
    结果示例中可见反引号 ` 防止关键字冲突,以及版本兼容标记 /*!40100 DEFAULT CHARACTER SET utf8 */。

2. 修改数据库

仅支持修改字符集和校验规则,不支持直接改库名(需迁移数据)。核心语法:

ALTER DATABASE db_name [alter_spacification [,alter_spacification]...];

实战:将 mytest 字符集从 utf8 改为 gbk。

ALTER DATABASE mytest CHARSET=gbk;
SHOW CREATE DATABASE mytest;

3. 删除数据库

高危操作,执行后数据无法恢复。核心语法:

DROP DATABASE [IF EXISTS] db_name;

提醒:生产环境禁止直接删除,需先备份并审批;开发环境删除前务必确认无用。

四、数据库的备份与恢复

数据是核心资产,备份是必备操作。MySQL 提供 mysqldump 工具备份,source 命令恢复。

1. 备份工具:mysqldump

基于命令行执行(需退出 MySQL 连接),核心语法:

# 备份单个数据库
mysqldump -P 端口号 -u 用户名 -p 密码 -B 数据库名 > 备份文件路径/文件名.sql

参数说明:

  • -P:端口号,默认 3306。
  • -u:用户名。
  • -p:密码,与 -p 间无空格。
  • -B:关键参数,备份包含数据库创建语句。
  • >:重定向符号。

2. 多场景备份实战

  • 备份单个完整数据库:
    mysqldump -P3306 -u root -p123456 -B mytest > D:/mytest.sql
    
  • 备份指定表:
    mysqldump -u root -p123456 mytest person user > D:/mytest_tables.sql
    
  • 批量备份多个数据库:
    mysqldump -u root -p123456 -B mytest db1 db2 > D:/multi_db.sql
    

3. 恢复实战:source 命令

需在 MySQL 连接中执行:

SOURCE 备份文件的绝对路径;

实战:恢复 mytest。

SOURCE D:/mytest.sql;

4. 注意事项

  • -B 参数重要性:未加 -B 会导致缺少库创建语句,恢复时需手动建库。
  • 路径问题:建议使用绝对路径。
  • 权限问题:备份需查询权限,恢复需创建、插入权限。
  • 编码问题:保持备份文件与数据库字符集一致。
  • 生产策略:建议定时自动备份,并存于独立服务器。

五、查看数据库连接情况

遇到卡顿或疑似入侵时,可用 show processlist 实时查看连接。

1. 核心语法

SHOW PROCESSLIST;

2. 结果解析

字段含义
Id连接唯一标识
User用户名
Host客户端 IP 和端口
db正在使用的数据库
Command状态 (Sleep/Query)
Time状态持续时间
State详细状态
Info执行的 SQL 语句

3. 应用场景

  • 排查卡顿:大量 Query 状态且 Time 很大,说明有慢 SQL。
  • 排查入侵:发现陌生 User 或非内网 Host,需立即改密。
  • 释放无效连接:大量 Sleep 状态可通过 kill 连接 Id; 释放。

六、避坑指南与最佳实践

最后总结一些实战经验:

  • 创建必加 IF NOT EXISTS:避免重复报错。
  • 禁止直接删除生产库:先备份,做权限管控。
  • 备份必加 -B 参数:确保恢复顺利。
  • 字符集优先 utf8:避免乱码。
  • 关注陌生 IP:及时发现入侵。

最佳实践:

  • 关键字大写,库名/表名小写。
  • 库名/表名使用反引号。
  • 生产环境采用本地 + 异地双重备份策略。
  • 遵循最小权限原则。
  • 定期查看连接,优化慢 SQL。

目录

  1. 前言
  2. 一、创建数据库:基础语法与个性化配置
  3. 二、字符集与校验规则:核心配置
  4. 1. 查看默认配置
  5. 2. 查看所有支持的字符集和校验规则
  6. 3. 校验规则的实际影响
  7. 三、操纵数据库:查看、修改、删除
  8. 1. 查看数据库
  9. 2. 修改数据库
  10. 3. 删除数据库
  11. 四、数据库的备份与恢复
  12. 1. 备份工具:mysqldump
  13. 备份单个数据库
  14. 2. 多场景备份实战
  15. 3. 恢复实战:source 命令
  16. 4. 注意事项
  17. 五、查看数据库连接情况
  18. 1. 核心语法
  19. 2. 结果解析
  20. 3. 应用场景
  21. 六、避坑指南与最佳实践
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • C++ STL string 类从零实现详解
  • AndroidGen-Llama-3-70B:零标注自主操控安卓应用的大模型实践
  • WorkBuddy 接入 QQ 机器人配置指南
  • Python 调用 IPIDEA API 实现 eBay 商品数据自动化采集
  • Java 后端 Web API 开发实战指南
  • VS Code 远程配置 GitHub Copilot 无法使用的排查与避坑
  • NWPU VHR-10 遥感目标检测数据集实战指南
  • 基于 Vue 和 Python 的学生考研管理系统实现
  • AI 绘画提示词逻辑优化:从语义理解到生成效率提升
  • 2024 开源图生视频模型横向评测:从 Stable Diffusion 到 SVD 的技术选型指南
  • C++ 中的逻辑运算符替代标记:and、or、not 详解
  • Linux TCP 协议详解:报文结构、连接状态与流量控制
  • C++ 模板与泛型编程:实现代码复用的核心手段
  • Spatial Joy 2025 全球 AR&AI 赛事:开发者资源、玩法与避坑攻略
  • 基于 FPGA 的 CLAHE 自适应限制对比度直方图均衡算法硬件实现
  • 命令行下的 MCPHost:让大模型通过协议调用外部工具
  • Flutter 三方库 shelf_modular 的鸿蒙化适配指南
  • Web 自动化测试入门:Selenium 核心原理与实战脚本
  • 主流 AIGC 检测降重工具实测对比与避坑指南
  • MHT-MD761 与云影无人机的集成实操要点,硬件安装与接口对接

相关免费在线工具

  • SQL 美化和格式化

    在线格式化和美化您的 SQL 查询(它支持各种 SQL 方言)。 在线工具,SQL 美化和格式化在线工具,online

  • SQL转CSV/JSON/XML

    解析 INSERT 等受限 SQL,导出为 CSV、JSON、XML、YAML、HTML 表格(见页内语法说明)。 在线工具,SQL转CSV/JSON/XML在线工具,online

  • CSV 工具包

    CSV 与 JSON/XML/HTML/TSV/SQL 等互转,单页多 Tab。 在线工具,CSV 工具包在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online