linux下的mysqldump是一个用来备份mysql数据库的命令,数据库是一个站点的根基,时常备份一下数据与资源文件,在遇到突发情况时也可以从容应对。手动备份数据库,我们可以直接在命令行输入如下指令:
mysqldump -u root -p YourDatabase > backdb.sql
回车后系统会要求用户输入数据库密码,输入正确的密码后,备份完成,此时可以在当前文件夹内看到一个名为"backdb.sql"的备份文件。
如果希望一步到位的实现备份操作,也可以将以上的命令改写成这样,直接将密码明码写入命令行中:
mysqldump -u root --password='YourPassword' YourDatabase > backdb.sql
以上的命令还可以简化为如下:
mysqldump -u root -p'YourPassword' YourDatabase > backdb.sql
因为数据库的备份是一个重复性的工作,每次依赖手动操作显然是枯燥且难以长期保持的,所以考虑利用linux的定时任务来完成这项工作。我们可以在命令行中输入如下命令来编辑linux的定时任务文件:
crontab -e
然后加入这样一行命令,让linux在每天的凌晨1点备份一下站点的数据库:
0 1 * * * mysqldump -u root -p'YourPassword' YourDatabase > backdb.sql
凡是最怕一个但是,由于将密码直接暴露在了定时任务中,这样始终是感觉不够安全,于是考虑不在命令行中显示密码,免密实现备份。
免密码备份数据库
步骤一
根目录下新建一个隐藏文件".my.cnf":
vim ~/.my.cnf
步骤二
输入如下指令,为mysqldump预指定用户以及密码,然后保存并关闭文件:
[mysqldump]
user = YourSqlUser
password = YourPassword
需要注意的是,这里的用户以及密码都需要用引号包裹,假设用户与密码都是"admin",演示如下:
[mysqldump]
user = 'admin'
password = 'admin'
步骤三
提高文件的访问权限要求,以确保文件的安全性:
chmod 600 ~/.my.cnf
步骤四
测试一下是否已经可以免密码备份:
mysqldump -u root YourDatabase > backdb.sql
修改定时任务的语句
需要注意的是这里就不需要再带上"-p"参数了,否则仍旧会强制要求输入密码,那么定时任务也就无法自动运行下去了。
0 1 * * * mysqldump -u root YourDatabase > backdb.sql