当前位置: 首页 > news >正文

MySQL 数据库基础操作指南:从创建管理到备份恢复全解析

前言

在日常开发或数据管理中,与 MySQL 数据库打交道时,我们最常遇到的需求往往不是复杂的架构设计,而是 “如何创建一个数据库”“怎么查看字符集是否正确”“备份的数据该怎么恢复” 这类基础操作。这些看似简单的步骤,却是保证数据安全、避免乱码或误删风险的关键 —— 比如没设置正确的校验规则可能导致中文排序异常,误删数据库前没备份会直接造成数据丢失,连不上数据库时不知道如何查看连接情况则会卡住业务进度。

为了帮大家系统掌握这些 “高频基础操作”,这篇博客会围绕 MySQL 数据库的核心日常管理展开:从最基础的 “查看已有数据库”“创建新数据库” 讲起,到如何安全删除数据库、如何配置字符集与校验规则避免乱码,再到数据库的基本操纵逻辑,最后重点拆解备份与恢复的具体步骤,以及如何查看数据库连接情况排查问题。

目录

查看和创建数据库

数据库删除

字符集和校验规则

操纵数据库

备份和恢复

查看连接情况


查看和创建数据库

show databases;
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]
create_specification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
大写的表示关键字
[] 是可选项
CHARACTER SET: 指定数据库采用的字符集
COLLATE: 指定数据库字符集的校验规则

创建数据库案例
创建名为 bd 的数据库
create database bd;
说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则
是:utf8_ general_ ci
创建一个使用utf8字符集的 bd2 数据库
create database bd2 charset=utf8;
创建一个使用utf字符集,并带校对规则的 bd3 数据库。
create database bd3 charset=utf8 collate utf8_bin;

三个数据库的创建结果

数据库删除

DROP DATABASE [IF EXISTS] db_ name;
执行删除之后的结果:
数据库内部看不到对应的数据库
对应的数据库文件夹被删除,级联删除,里面的数据表全部被删
注意:不要随意删除数据库

创建数据库:create  database db_name;---本质就是在/var/lib/mysql 创建一个目录(小编的Linux云主机上,大家可能不同)

删除数据库:drop database db_name;----删除目录

所以在上面那个路径下直接mkdir ,rm进行命令操作也能成功,但是别这么做,毕竟是不规范的操作。

字符集和校验规则

查看系统默认字符集以及校验规则
show variables like 'character_set_database';
show variables like 'collation_database';
查看数据库支持的字符集
show charset;

字符集主要是控制用什么语言。比如utf8就可以使用中文。
查看数据库支持的字符集校验规则
show collation;

创建数据库的时候,有两个编码集:

1.数据库编码集--数据库未来存储数据

2.数据库校验集--支持数据库,进行字段比较使用的编码,本质也是一种读取数据库中数据的采用的编码格式

综上:数据库无论对数据做任何操作,都必须保证操作和编码必须是编码一致的!!!

校验规则对数据库的影响
不区分大小写
创建一个数据库,校验规则使用utf8_ general_ ci[不区分大小写]

create database test1 collate utf8_general_ci;
use test1;
create table name(name varchar(20));
insert into num values('a');
insert into num values('A');
insert into num values('b');
insert into num values('B');
select *from num;

区分大小写
创建一个数据库,校验规则使用utf8_ bin[区分大小写]
create database test2 collate utf8_general_ci;
use test2;
create table name(name varchar(20));
insert into num values('a');
insert into num values('A');
insert into num values('b');
insert into num values('B');
不区分大小写的排序以及查询结果

区分大小写的排序和查询结果

操纵数据库

查看数据库

show databases;

显示创建语句

show create database 数据库名;
mysql> show create database test2;
+----------+--------------------------------------------------------------------------------------------------------------------------+
| Database | Create Database                                                                                                          |
+----------+--------------------------------------------------------------------------------------------------------------------------+
| test2    | CREATE DATABASE `test2` /*!40100 DEFAULT CHARACTER SET utf8mb3 COLLATE utf8mb3_bin */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+----------+--------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
说明:
MySQL 建议我们关键字使用大写,但是不是必须的。
数据库名字的反引号``,是为了防止使用的数据库名刚好是关键字
/*!40100 default.... */ 这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话

修改数据库

语法:

ALTER DATABASE db_name
[alter_spacification [,alter_spacification]...]
alter_spacification:
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name
说明:
对数据库的修改主要指的是修改数据库的字符集,校验规则
实例: 将 hellomysql 数据库字符集改成 gbk
mysql> show create database hellomysql;
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
| Database   | Create Database                                                                                                                      |
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
| hellomysql | CREATE DATABASE `hellomysql` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+------------+--------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> alter database hellomysql charset=gbk;
Query OK, 1 row affected (0.02 sec)mysql> show create database hellomysql;
+------------+-------------------------------------------------------------------------------------------------------+
| Database   | Create Database                                                                                       |
+------------+-------------------------------------------------------------------------------------------------------+
| hellomysql | CREATE DATABASE `hellomysql` /*!40100 DEFAULT CHARACTER SET gbk */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+------------+-------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)mysql> 

备份和恢复

备份

# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

在系统终端执行正确的 mysqldump 命令

将test2库备份文件

# Linux 系统示例(直接在 [root@xxx ~]# 提示符下执行)
mysqldump -P3306 -u root -p -B test2 > /root/test2_backup.sql

这时,可以打开看看test2_backup.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

还原
mysql> source 路径;

注意事项
如果备份的不是整个数据库,而是其中的一张表,怎么做?
mysqldump -u root -p 数据库名 表名1 表名2 > 。。。

mysql+系统级命令

# 1. 先登录 MySQL 客户端创建数据库(若已存在可跳过)
mysql -u root -p
Enter password: 你的密码
mysql> CREATE DATABASE IF NOT EXISTS test2;  # 创建数据库
mysql> exit;  # 退出客户端# 2. 执行还原命令,指定数据库
mysql -u root -p test2 < /root/test2_backup.sql

同时备份多个数据库

mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径
MYSQL客户端执行:
如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

查看连接情况

show processlist

可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。以后大家发现自己数据库比较慢时,可以用这个指令来查看数据库连接情况。

结束语

到这里,MySQL 数据库的核心基础操作就梳理完毕了。我们从数据库的 “查看与创建” 入手,掌握了如何安全删除数据库、如何通过字符集与校验规则规避乱码问题,也了解了数据库的基本操纵逻辑,最后重点学会了备份与恢复的两种常用方式,以及如何通过查看连接情况排查异常 —— 这些操作看似基础,却是保障数据安全、稳定使用 MySQL 的 “基石”。

比如备份与恢复,很多人会在数据丢失后才意识到其重要性;字符集配置则容易被忽略,直到出现中文排序错误才回头排查。希望这篇内容能帮你把这些基础操作内化为 “习惯”,而不是等到出问题才临时补救。

如果在实际操作中遇到了特殊场景(比如超大数据库备份、多用户连接冲突),或者对某一步操作有疑问,欢迎在评论区交流。后续我们还会针对 MySQL 的进阶操作(如 SQL 优化、事务管理)展开分享,让大家从 “会用” 到 “用好” MySQL,持续提升数据管理能力。

http://www.dtcms.com/a/389039.html

相关文章:

  • 【Java】-- rjvm 项目分析
  • Markdown 常用语法参考
  • 11.2.3 固定话题聊天实现
  • CAN(控制器局域网)工业协议教学文档(一)
  • PHP基础-变量与常量(第八天)
  • SQ01,SQ02,SQ03,SE93事务码配置
  • AI提示词Excel 表格提取数据准确度处理
  • DeviceNet 转 EtherNet/IP 实现罗克韦尔 PLC 与库卡机器人在汽车白车身焊接的微秒级数据同步协作案例
  • GPT-5 vs Gemini 2.5 Pro:两大AI旗舰模型深度技术对比
  • 31、GPT核心引擎完整手工构建:从算法原理到工程优化(Generative Pre-trained Transformer)
  • MySQL MHA 完整配置与故障后原主库还原指南
  • 栈-946.验证栈序列-力扣(LeetCode)
  • spring boot3.0整合rabbitmq3.13
  • Scrapy爬虫利器:CrawlSpider详解
  • 从零开始学Flink:数据源
  • GRPO算法复现
  • AI+Flask博客项目实战提示词笔记 20250918
  • 无人设备遥控器之时间戳技术篇
  • 模块四 展望微服务
  • RN 添加 <NavigationContainer>组件报错
  • 深入理解 AVL 树
  • 软考中级习题与解答——第八章_计算机网络(2)
  • FinalShell远程连接CentOS下方文件列表信息不显示且刷新报空指针异常
  • 贪心算法应用:线性规划贪心舍入问题详解
  • 设计模式学习笔记(二)
  • 轻量化录屏插件,MP4输出格式
  • 静态代理 设计模式
  • Salesforce知识点:触发器:自动化业务逻辑的核心工具详解
  • CentOS 8.5部署Zabbix6.0 agent2端
  • 【TestCenter】设置DHCP Option