为了账号安全,请及时绑定邮箱和手机立即绑定

如何在没有密码提示的情况下执行mysqldump?

如何在没有密码提示的情况下执行mysqldump?

九州编程 2019-12-09 14:06:14
我想知道在不提示输入密码的情况下执行数据库mysqldump的命令。原因:我想运行一个cron作业,该作业每天执行一次mysqldump数据库的转储。因此,出现提示时,我将无法插入密码。我该如何解决?
查看完整描述

3 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

一些答案提到将密码放入配置文件中。


另外,您也可以从脚本中进行操作export MYSQL_PWD=yourverysecretpassword。


与使用配置文件相比,此方法的好处在于,不需要单独的配置文件即可与脚本保持同步。您只有要维护的脚本。


有没有缺点给此方法。


该密码对系统上的其他用户不可见(如果在命令行上,则将可见)。环境变量仅对运行mysql命令的用户和root用户可见。


任何可以读取脚本本身的人都可以看到该密码,因此请确保脚本本身受到保护。这与保护配置文件没有什么不同。如果要使脚本公开可读(export MYSQL_PWD=$(cat /root/mysql_password)例如),仍然可以从单独的文件中获取密码。导出变量比构建配置文件要容易得多。


例如,


$ export MYSQL_PWD=$(>&2 read -s -p "Input password (will not echo): "; echo "$REPLY")

$ mysqldump -u root mysql | head

-- MySQL dump 10.13  Distrib 5.6.23, for Linux (x86_64)

--

-- Host: localhost    Database: mysql

-- ------------------------------------------------------

-- Server version   5.6.23

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

$ mysqldump -u root mysql | head

-- MySQL dump 10.13  Distrib 5.6.23, for Linux (x86_64)

--

-- Host: localhost    Database: mysql

-- ------------------------------------------------------

-- Server version   5.6.23

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;


查看完整回答
反对 回复 2019-12-09
  • 3 回答
  • 0 关注
  • 902 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信