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

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

前言

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

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

查看和创建数据库代码语言:javascript复制show databases;代码语言:javascript复制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 的数据库

代码语言:javascript复制create database bd; 说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则

是:utf8_ general_ ci

创建一个使用 utf8 字符集的 bd 2 数据库

代码语言:javascript复制create database bd2 charset=utf8; 创建一个使用 utf 字符集,并带校对规则的 bd 3 数据库。

代码语言:javascript复制create database bd3 charset=utf8 collate utf8_bin;三个数据库的创建结果

数据库删除代码语言:javascript复制DROP DATABASE [IF EXISTS] db_ name; 执行删除之后的结果:

数据库内部看不到对应的数据库

对应的数据库文件夹被删除,级联删除,里面的数据表全部被删

注意:不要随意删除数据库

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

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

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

字符集和校验规则 查看系统默认字符集以及校验规则

代码语言:javascript复制show variables like 'character_set_database';

show variables like 'collation_database'; 查看数据库支持的字符集

代码语言:javascript复制show charset; 字符集主要是控制用什么语言。比如 utf8 就可以使用中文。

查看数据库支持的字符集校验规则

代码语言:javascript复制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');

不区分大小写的排序以及查询结果

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

操纵数据库查看数据库

代码语言:javascript复制show databases;显示创建语句

代码语言:javascript复制show create database 数据库名;代码语言:javascript复制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版本,就执行这句话

修改数据库

语法:

代码语言:javascript复制ALTER DATABASE db_name

[alter_spacification [,alter_spacification]...]

alter_spacification:

[DEFAULT] CHARACTER SET charset_name

[DEFAULT] COLLATE collation_name 说明:

对数据库的修改主要指的是修改数据库的字符集,校验规则

实例: 将 hellomysql 数据库字符集改成 gbk

代码语言:javascript复制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> 备份和恢复备份

代码语言:javascript复制# mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径在系统终端执行正确的 mysqldump 命令

将test2库备份文件

代码语言:javascript复制# Linux 系统示例(直接在 [root@xxx ~]# 提示符下执行)

mysqldump -P3306 -u root -p -B test2 > /root/test2_backup.sql 这时,可以打开看看 test2_backup.sql 文件里的内容,其实把我们整个创建数据库,建表,导入数据的语句都装载这个文件中。

还原

代码语言:javascript复制mysql> source 路径; 注意事项

如果备份的不是整个数据库,而是其中的一张表,怎么做?

代码语言:javascript复制mysqldump -u root -p 数据库名 表名1 表名2 > 。。。mysql+系统级命令

代码语言:javascript复制# 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同时备份多个数据库

代码语言:javascript复制mysqldump -u root -p -B 数据库名1 数据库名2 ... > 数据库存放路径 MYSQL客户端执行:

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据库,再使用source来还原。

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

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

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

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

相关推荐