我想知道在没有提示密码的情况下执行数据库mysqldump的命令。
原因: 我想运行一个cron作业,每天对数据库进行一次mysqldump。因此,当提示时,我将无法插入密码。
我怎么解决这个问题呢?
我想知道在没有提示密码的情况下执行数据库mysqldump的命令。
原因: 我想运行一个cron作业,每天对数据库进行一次mysqldump。因此,当提示时,我将无法插入密码。
我怎么解决这个问题呢?
当前回答
你可以通过4个简单的步骤来实现这一点
创建目录存储脚本和DB_backups 创建~ / .my.cnf 创建一个~/.script.sh shell脚本来运行mysqldump 添加cronjob来运行mysql转储。
下面是详细的步骤
步骤1
使用sudo mkdir ~/backup在主目录上创建一个目录
步骤2
在您的主目录下运行sudo nano ~/.my.cnf并添加下面的文本并保存
[mysqldump]
#use this if your password has special characters (!@#$%^&..etc) in it
password="YourPasswordWithSpecialCharactersInIt"
#use this if it has no special characters
password=myPassword
步骤3
CD到~/backup,并创建另一个文件script.sh 向其添加以下文本
SQLFILE=/path/to/where/you/want/to/dump/dbname.sql
DATABASE=dbname
USER=myUsername
, mysqldump——defaults-file = ~ / .my.cnf - u $ {USER} ${数据库}| gzip > dbName_美元(日期+ Y \ % m \ % d_ \ \ % % H \ % m) .sql.gz
步骤4
在控制台中,键入crontab -e打开将从其中执行自动备份作业的cron文件
将下面的文本添加到文件底部
0 0 * * * ./backup/script.sh
添加到cron文件底部的文本假设您的备份将在每天午夜运行。
这就是你需要的,伙计们 ;)
其他回答
我有以下内容。
/etc/mysqlpwd
[mysql]
user=root
password=password
使用以下别名。
alias 'mysql -p'='mysql --defaults-extra-file=/etc/mysqlpwd'
要做恢复,我简单地使用:
mysql -p [database] [file.sql]
你可以通过4个简单的步骤来实现这一点
创建目录存储脚本和DB_backups 创建~ / .my.cnf 创建一个~/.script.sh shell脚本来运行mysqldump 添加cronjob来运行mysql转储。
下面是详细的步骤
步骤1
使用sudo mkdir ~/backup在主目录上创建一个目录
步骤2
在您的主目录下运行sudo nano ~/.my.cnf并添加下面的文本并保存
[mysqldump]
#use this if your password has special characters (!@#$%^&..etc) in it
password="YourPasswordWithSpecialCharactersInIt"
#use this if it has no special characters
password=myPassword
步骤3
CD到~/backup,并创建另一个文件script.sh 向其添加以下文本
SQLFILE=/path/to/where/you/want/to/dump/dbname.sql
DATABASE=dbname
USER=myUsername
, mysqldump——defaults-file = ~ / .my.cnf - u $ {USER} ${数据库}| gzip > dbName_美元(日期+ Y \ % m \ % d_ \ \ % % H \ % m) .sql.gz
步骤4
在控制台中,键入crontab -e打开将从其中执行自动备份作业的cron文件
将下面的文本添加到文件底部
0 0 * * * ./backup/script.sh
添加到cron文件底部的文本假设您的备份将在每天午夜运行。
这就是你需要的,伙计们 ;)
因为你使用的是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命令查看整个命令(包括密码)。
我用不同的方式,使用Plink(Putty命令行)连接到remotehost,然后下面的命令是在远程服务器上运行的Plink文件中,然后我使用RSYNC从windows获取它并备份到onprem NAS。
sudo mysqldump -u root --all-databases --events --routines --single-transaction > dump.sql
我在远程主机上设置了密钥,并使用PowerShell,通过任务调度器每周运行一次。
对我来说,使用MariaDB我必须这样做:添加文件~/.my.cnf,并通过执行chmod 600 ~/.my.cnf更改权限。然后将您的凭据添加到文件中。神奇的是,我错过了密码需要在客户端块下(参考:docs),就像这样:
[client]
password = "my_password"
[mysqldump]
user = root
host = localhost
如果你碰巧来这里寻找如何用MariaDB做mysqldump。将密码放在[client]块下,然后将用户放在[mysqldump]块下。