我正在尝试设置一个 cron 作业,以便每晚午夜备份我的数据库。根据我阅读的一些教程,我编写了一个执行以下命令的脚本:
mysqldump -u my_username --all-databases | gzip -9 > $filename
出于安全原因,我不想将密码添加到命令中,因此我在主目录中创建了一个 .my.cnf 文件,如下所示:
[mysqldump]
user = my_username
password = my_password
问题是,每当我运行 mysqldump 时,我都会收到以下消息:
mysqldump: Got error: 1045: Access denied for user 'my_username'@'localhost' (using password: YES) when trying to connect
我甚至尝试过--defaults-file="/home/my_username/.my.cnf"
在命令中添加内容,但无济于事。我还需要做其他事情吗?mysqldump 在 Ubuntu 中处理配置的方式是否不同?请理解,我尝试过阅读手册,但我无法理解它们——太多信息需要筛选。
答案1
此用户没有权限。我的 SQl 要求您在用户表中为每个“用户”+“主机”组合添加一个条目。在您的例子中,用户表不包含 my_username@localhost 的条目。您可能会说它包含[电子邮件保护]但 mysql 并不认为两者相同。
在此表中添加条目的最佳方法是向 my_username@localhost 授予权限。