一、备份数据库

mysql自带了数据库备份工具mysqldump可以很方便的对数据库进行备份:

mysqldump -u root -p --all-database > db.sql

以上命令就完成了一次数据备份,备份后的数据保存在文件 db.sql ,参数 --all-databases 是指备份所有数据库。

如果只想备份特定的数据库,通过参数 --database, -B 指定即可,也可以直接加在命令后面:

mysqldump -u root -p test > test.sql

这条命令就只备份test数据库,生成的test.sql文件即为数据库。

二、恢复数据库

恢复数据库使用mysql命令就可以完成,要注意的地方是恢复到数据库之前要求数据库必须存在:

mysql -u root -p test < test.sql

以上命令就表示把备份的数据库文件导入到数据库test中,如果test数据库不存在,会报错:

root@35c000f43aa6:/backup# mysql -u root -p test< test.sql 
Enter password: 
ERROR 1049 (42000): Unknown database 'test'

三、mysqldump用户权限问题

使用mysqldump进行数据备份时依赖账户密码和数据库的访问权限,如果使用正常的业务账号容易导致账号密码被泄露。根据权限最小化原则,一般建议为mysqldump建立单独的用户身份。

一个单独的mysqldump用户应该包含以下权限:

  1. 只有只读权限,不能修改数据库内容
  2. 只能本地用户登陆

创建一个符合以上条件的dumper用户:

create user dumper@'127.0.0.1' identified by '123456';
grant select on test.* to dumper@'127.0.0.1';
grant show view on test.* to dumper@'127.0.0.1';
grant lock tables on test.* to dumper@'127.0.0.1';
grant trigger on test.* to dumper@'127.0.0.1';
最后修改:2019 年 06 月 19 日
如果觉得我的文章对你有用,请随意赞赏