脚本中执行mysqldump的安全问题

本文介绍了如何使用mysqldump进行数据库备份,并关注在脚本中使用时的安全问题。通过在my.cnf配置文件中设置用户和密码,或者使用--defaults-file参数指定特定的.cnf文件,可以提高安全性,避免密码在ps命令下暴露。进一步地,通过在命令参数和配置文件中分别传递部分敏感信息,可以增强保护,减少潜在风险。
摘要由CSDN通过智能技术生成

我们经常用mysqldump来做数据库备份的工作,终端中手工执行,或是写到sh脚本中由系统定时执行。

一般命令格式如下: 

mysqldump -u [user name] -p[password] [database name] > [dump file]

一般来说在终端中执行该命令时,-p参数后留空,系统会在执行时提示你要输入对应的密码。

如果把这个命令放到脚本里去,-p参数后就要填写真实的密码,这样脚本才能正确执行,否则系统会等待用户输入密码直到超时退出。

这里要讲的是,mysqldump命令按上面的方法在脚本中使用时,如果有其它用户登录了系统,然后他又用ps命令来查询系统进程,他会发现你的mysql用户名和密码全显示了出来。相当的不安全。

如何解决?

在my.cnf配置文件中,添加如下内容:

[mysqldump]
user=mysqluser
password=secret

然后,在脚本中就不需要再写-u -p参数了。同样,终端中执行mysqldump也不需要带-u -p参数。

是不是安全了一点。

可能还不够安全,my.cnf是全局的配置文件,可能为了执行某项任务,这里填的用户的权限比较大,还是有点危险的。

那么,mysqldump有个参数叫--defaults-file,可以指定配置文件的位置,这样,你就可以在指定的.cnf文件中填上有适当权限的用户信息,比如只有只读权限的。

比如这样:

mysqldump --defaults-file=/path-to-file/my.cnf –u my_username my_db > my_db.sql

这样mysqldump执行时会去读指定的配置文件,使用其中的信息来连接数据库。

上面的命令可以看到使用了-u参数来指定了用户名,但是没有-p参数,所以,在配置文件中,可以只保留password=secret的设置。这样,一部分信息通过命令参数传递,一部分信息通过配置文件传递,隐藏了不必要暴露的信息,是不是相对安全了些。

以上仅供参考,请以官方文档为准。

-完-

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值