我有一个MySql数据库,我想每天备份到一个文件。 (我将稍后下载用于服务器外备份)。
我已经在我的crontab(每日运行)中设置了以下命令:
mysqldump -–opt -Q -h [myhost] -u myusername -–password=***** ebooklibrary > /fullpath.../_db_backups/openelibrary.sql
数据库名称是ebooklibrary 。
我不断得到这个错误:
mysqldump: Got error: 1045: Access denied for user 'myusername'@'97.74.144.139' (using password: NO) when trying to connect
我该如何解决这个问题,或者正确地做到这一点,以便mysqldump每天运行?
谢谢。
使用shell,以下命令工作:
mysql -h myhost -u myusername -p"*****" ebooklibrary
我相信这个问题是与你如何指定密码。 尝试
mysqldump –opt -Q -h [myhost] -u myusername –p"*****" ebooklibrary > /fullpath.../_db_backups/openelibrary.sql
在命令行上指定密码时,需要使用
--password="xxx"
而不是
-password="xxx"
注意第一个命令的双破折号。
编辑:你知道如果数据库服务器是相同的服务器作为networking服务器? 如果是这样,你有没有尝试省略主机? 有了这个想法,你还试过–host = 127.0.0.1(刚刚在我的机器上试了一下 – 看起来很正确的主机名称)
这个错误有两个可能的原因。
1)你的密码有特殊的字符,如!%#
等,如果是这种情况,你可以通过在它前面加一个反斜杠“\”来避开这个字符。
2)该用户真的没有来自错误中提到的IP地址的访问许可。 解决方法是从指定的IP向该用户提供权限,或者不尝试使用该主机进行mysql访问。
如果您有权访问服务器CLI,则也可以使用以下命令(如果您不指定主机,则mysql将尝试连接到本地主机):
mysqldump -uUSER -pPASS ebooklibrary > /fullpath.../_db_backups/openelibrary.sql
或者如果远程执行命令,则可以使用以下语法。
mysqldump -h IP -uUSER -pPASS ebooklibrary > /fullpath.../_db_backups/openelibrary.sql
您应确定您具有执行mysqldump页面上指定的转储的必要权限。