一、备份数据库
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用户应该包含以下权限:
- 只有只读权限,不能修改数据库内容
- 只能本地用户登陆
创建一个符合以上条件的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';
此处评论已关闭