一、备份数据库
mysql 自带了数据库备份工具 mysqldump 可以很方便的对数据库进行备份:
1 |
mysqldump -u root -p --all-database > db.sql |
以上命令就完成了一次数据备份,备份后的数据保存在文件 db.sql
,参数--all-databases
是指备份所有数据库。
如果只想备份特定的数据库,通过参数--database, -B
指定即可,也可以直接加在命令后面:
1 |
mysqldump -u root -p test > test.sql |
这条命令就只备份 test 数据库,生成的 test.sql 文件即为数据库。
二、恢复数据库
恢复数据库使用 mysql 命令就可以完成,要注意的地方是恢复到数据库之前要求数据库必须存在:
1 |
mysql -u root -p test < test.sql |
以上命令就表示把备份的数据库文件导入到数据库 test 中,如果 test 数据库不存在,会报错:
1 2 3 |
root@35c000f43aa6:/backup# mysql -u root -p test< test.sql Enter password: ERROR 1049 (42000): Unknown database 'test' |
三、 mysqldump 用户权限问题
使用 mysqldump 进行数据备份时依赖账户密码和数据库的访问权限,如果使用正常的业务账号容易导致账号密码被泄露。根据权限最小化原则,一般建议为 mysqldump 建立单独的用户身份。
一个单独的 mysqldump 用户应该包含以下权限:
- 只有只读权限,不能修改数据库内容
- 只能本地用户登陆
创建一个符合以上条件的 dumper
用户:
1 2 3 4 5 |
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'; |
评论