mysql数据备份和恢复

mysql数据备份和恢复

今天记录一个知识点,关于mysql数据库、数据库表的一个备份和恢复操作

有时候在工作中会遇到网站迁移、或者服务器更换,需要对数据进行备份还有后续的恢复。这时候就需要用到mysql的备份恢复命令

mysqldump

❗️此命令既可以备份数据库、也可以备份表❗️

话不多说,我们开始演示

任务一 : 备份class数据库,将备份文件保存在 /tmp/mysqlbak/目录下,并起名为 class_db.sql

准备一个简单的class数据库以及一张student表

CREATE DATABASE `class` CHARACTER SET utf8mb4;
USE class;

CREATE TABLE student(
   id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   name VARCHAR(15) NOT NULL,
   age INT NOT NULL,
   email VARCHAR(20) NOT NULL
);

备份 class 数据库命令如下

这里的备份建议使用非root用户备份,这里为了方便,用root进行演示。

实际工作中,数据库应该有非root用户,给该用户赋予某个数据库或者数据库表的权限。而并非给予root权限。

具有安全风险❗️❗️❗️

[root@centos7 ~]# mysqldump -uroot -p123456 class > /tmp/mysqlbak/class_db.sql
# 查看备份情况,可以看到,备份成功。
[root@centos7 ~]# ls /tmp/mysqlbak
class_db.sql

进行数据库恢复操作,将该数据库恢复为class数据库,或者其他数据库均可。

命令如下

# 将class_db.sql 数据库恢复成class数据库
[root@centos7 ~]# mysql -uroot -p123456 class < /tmp/mysqlbak/class_db.sql
[root@centos7 ~]# mysql -uroot -p
mysql> show databases;
class

# 将class_db.sql数据库恢复成 classTest数据库
[root@centos7 ~]# mysql -uroot -p123456 classTest < /tmp/mysqlbak/class_db.sql
[root@centos7 ~]# mysql -uroot -p
mysql> show databases;
classTest

任务二 : 备份mysql数据库下的user表,将备份文件保存在 /tmp/mysqlbak/目录下,并起名为 user_tb.sql

备份mysql 数据库下的user表的 命令如下

[root@centos7 ~]# mysqldump -uroot -p123456 mysql user > /tmp/mysqlbak/user_tb.sql

将user表恢复到 class数据库中

[root@centos7 ~]# mysql -uroot -p123456 class < /tmp/mysqlbak/user_tb.sql
[root@centos7 ~]# mysql -uroot -p
mysql> use class;
show tables;

当MySQL中有多个库需要备份,一个一个去备份很麻烦,使用 -A选项可以全部备份数据库中的所有库

命令如下 -A

[root@centos7 ~]# mysqldump -uroot -p -A > /tmp/mysqlbak/all_db.sql
Enter password:

有时候 只想备份数据库中的表结构,不需要表数据,那么可以使用-d 选项实现

命令如下:

[root@centos7 ~]# mysqldump -uroot -p123456 -d class > /tmp/mysqlbak/tb_desc.sql 

这里补充一个知识点,如何在mysql中创建用户,并赋予权限

mysql -uroot -p  # 登录mysql

# 创建用户 admin ,密码Admin
# 'admin'@'%' 是表示允许用户从哪个主机连线到mysql
% 表示任何主机
IP 地址指定IP
主机名:指定主机名也可以

mysql> CREATE USER 'admin'@'%' IDENTIFIED BY 'Admin';

# 授予admin用户对class数据库有==所有访问执行==权限。

mysql> GRANT ALL PRIVILEGES ON class.* TO 'admin'@'%';
mysql> FLUSH PRIVILEGES;

# 授予admin用户对class数据库只有查询、新增权限
mysql> GRANT SELECT,INSERT ON class.* TO 'admin'@'%';
mysql> FLUSH PRIVILEGES;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值