我在ubuntu 12.04上使用CakePHP并试图为mysqldump设置一个shell。我已经关注了几个关于.my.cnf文件的教程(例如this和this)但是我不确定它实际上是否使用了我告诉它使用的cnf文件(更多细节)走向最底层。)
首先,我创建了CakePHP shell并直接将用户名/密码放入其中,以确定它是否能正常执行,而且确实如此。
exec('mysqldump --user=root --password=mypassword --host=localhost MyDatabase> /var/www/app/db_backups/'."backup-" . date("Y-m-d") . ".sql");
编辑 - 好的,我想出了很多东西,但仍然没有运气
exec('mysqldump --defaults-extra-file=~/.my.cnf --host=localhost MyDatabase > /var/www/app/db_backups/'."backup-" . date("Y-m-d") . ".sql");
当我在上面的exec函数中指定主机和数据库时,我收到此错误:Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
。我更改了.my.cnf文件中的用户名,错误反映了我再次运行时的用户名更改。
好的,现在我知道我有正确的.my.cnf文件。我将主机和数据库添加到.my.cf而不是exec函数中。当我运行它时,它现在似乎正常运行..但是,打开sql输出文件时它显示
Usage: mysqldump [OPTIONS] database [tables]
OR mysqldump [OPTIONS] --databases [OPTIONS] DB1 [DB2 DB3...]
OR mysqldump [OPTIONS] --all-databases [OPTIONS]
For more options, use mysqldump --help
所以基本上看起来它看不到主机或数据库,尽管它现在从正确的.my.cnf文件中选择,如上所示,用户名更改。该文件现在看起来像
[mysqldump]
user=root
password=mypassword
host=localhost
database=MyDatabase
我也尝试将它们放在[mysql],[client]和一系列其他组合下,但它们都只是吐出相同的sqldump选项消息