我有一个 MySql 数据库,我想每天将其备份到一个文件中。(稍后我将下载该数据库以进行服务器外备份)。
我已经在 crontab 中设置了以下命令(每天运行):
mysqldump -–opt -Q -h [myhost] -u myusername -–password=***** ebooklibrary > /fullpath.../_db_backups/openelibrary.sql
数据库名称是电子书图书馆。
我经常收到这个错误:
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
答案1
我认为问题在于您指定密码的方式。尝试
mysqldump –opt -Q -h [myhost] -u myusername –p"*****" ebooklibrary > /fullpath.../_db_backups/openelibrary.sql
答案2
在命令行上指定密码时,需要使用
--password="xxx"
而不是
-password="xxx"
注意第一个命令上的双破折号。
编辑:您知道数据库服务器是否与 Web 服务器是同一台服务器吗?如果是,您是否尝试过省略主机?考虑到这一点,您是否也尝试过 --host=127.0.0.1(我刚刚在我的计算机上尝试过 - 它似乎对正确的主机名非常挑剔)
答案3
此错误可能有两个原因。
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页。