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

我想知道在不提示输入密码的情况下执行数据库mysqldump的命令。

原因:我想运行一个cron作业,该作业每天执行一次mysqldump数据库的转储。因此,出现提示时,我将无法插入密码。

我该如何解决?


九州编程
浏览 903回答 3
3回答

aluckdog

一些答案提到将密码放入配置文件中。另外,您也可以从脚本中进行操作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 */;
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL