我想知道在没有提示密码的情况下执行数据库mysqldump的命令。
原因: 我想运行一个cron作业,每天对数据库进行一次mysqldump。因此,当提示时,我将无法插入密码。
我怎么解决这个问题呢?
我想知道在没有提示密码的情况下执行数据库mysqldump的命令。
原因: 我想运行一个cron作业,每天对数据库进行一次mysqldump。因此,当提示时,我将无法插入密码。
我怎么解决这个问题呢?
当前回答
使用——defaults-extra-file eg:
mysqldump --defaults-extra-file=/path/.sqlpwd [database] > [desiredoutput].sql
注意:.sqlpwd只是一个示例文件名。你想用什么就用什么。
注意:MySQL会自动检查~/.my.cnf,它可以用来代替——defaults-extra-file
如果你像我一样使用CRON,试试这个!
mysqldump --defaults-extra-file=/path/.sqlpwd [database] > "$(date '+%F').sql"
要求的许可和建议的所有权
sudo chmod 600 /path/.sqlpwd && sudo chown $USER:nogroup /path/.sqlpwd
.sqlpwd内容:
[mysqldump]
user=username
password=password
传递.cnf或.sqlpwd的其他示例
[mysql]
user=username
password=password
[mysqldiff]
user=username
password=password
[client]
user=username
password=password
如果你想自动登录到一个数据库,你需要[mysql]条目作为实例。
您现在可以创建一个别名,自动将您连接到DB
alias whateveryouwant="mysql --defaults-extra-file=/path/.sqlpwd [database]"
您也可以只将密码放在.sqlpwd中,并通过脚本/cli传递用户名。我不确定这是否会提高安全性,这完全是另一个问题。
为了完整起见,我将声明您可以执行以下操作,但这是非常不安全的,不应该在生产环境中使用:
mysqldump -u [user_name] -p[password] [database] > [desiredoutput].sql
注意:-p和密码之间没有空格。
例如-pPassWord是正确的而-p Password是不正确的。
其他回答
补充@Frankline的回答:
为了在配置文件中使用密码,命令中必须排除-p选项。
正确的: Mysqldump -u my_username my_db > my_db.sql
错误的: Mysqldump -u my_username -p my_db > my_db.sql
.my.cnf可以省略用户名。
[mysqldump]
password=my_password
如果你的.my.cnf文件不在默认位置,mysqldump也看不到它,使用——defaults-file指定它。
Mysqldump——defaults-file=/path-to-file/.my.cnf -u my_username my_db > my_db.sql . Mysqldump
当然,我认为把完整的cmd行放在根crontab中会更好,更安全。 至少crontab编辑被限制(可读)给已经知道密码的人。所以不用担心用纯文本显示它……
如果需要一个简单的mysqldump…只需放置一个bash脚本,接受cred作为参数,并在里面执行所有设施…
bas文件在simple
#!/bin/bash
mysqldump -u$1 -p$2 yourdbname > /your/path/save.sql
在Crontab中:
0 0 * * * bash /path/to/above/bash/file.sh root secretpwd 2>&1 /var/log/mycustomMysqlDump.log
我用不同的方式,使用Plink(Putty命令行)连接到remotehost,然后下面的命令是在远程服务器上运行的Plink文件中,然后我使用RSYNC从windows获取它并备份到onprem NAS。
sudo mysqldump -u root --all-databases --events --routines --single-transaction > dump.sql
我在远程主机上设置了密钥,并使用PowerShell,通过任务调度器每周运行一次。
是的,这很简单....只需要一个神奇的命令行
mysqldump --user='myusername' --password='mypassword' -h MyUrlOrIPAddress databasename > myfile.sql
完成:)
因为你使用的是Ubuntu,你所需要做的只是在你的主目录中添加一个文件,它将禁用mysqldump密码提示。这是通过创建文件~/.my.cnf来完成的(权限需要是600)。
将其添加到.my.cnf文件中
[mysqldump]
user=mysqluser
password=secret
这让您可以作为需要密码的MySQL用户连接,而无需实际输入密码。甚至不需要-p或——密码。
非常方便的脚本mysql和mysqldump命令。
实现这一目标的步骤可以在此链接中找到。
或者,您可以使用以下命令:
mysqldump -u [user name] -p[password] [database name] > [dump file]
但是请注意,它本质上是不安全的,因为在转储运行时,系统上的任何其他用户都可以使用简单的ps ax命令查看整个命令(包括密码)。