使用mysqldump备份MySQL数据库报错unknown variable 'database=foo'
问题根因
[client] 是MySQL通用客户端配置段,会被所有MySQL生态的客户端工具(包括mysql、mysqldump、mysqladmin等)加载读取。但database配置项仅支持mysql交互式客户端,mysqldump等工具没有该参数定义,因此读取到配置里的database=foo时就会抛出未知变量错误。
解决方案
提供两种可选修复方式:
- 方案一(推荐):调整配置段归属
把database配置项从[client]段迁移到仅对mysql客户端生效的[mysql]段,修改后的my.cnf参考如下:
!includedir /etc/mysql/conf.d/ !includedir /etc/mysql/mysql.conf.d/ [client] user=foouser password=foopassword default-character-set=utf8 [mysql] database=foo
修改完成后不需要重启MySQL服务,配置会自动对后续执行的客户端命令生效。
- 方案二:临时跳过配置文件读取
如果不想修改全局配置,可以在执行mysqldump命令时添加--no-defaults参数,强制跳过所有默认配置文件的读取,命令示例:mysqldump --no-defaults -u root -p foo > /home/backup/backup.foo_db.sql
注意:使用--no-defaults参数后,配置文件中定义的账号、密码、字符集等配置也不会生效,需要手动在命令中补充指定对应参数。
验证操作
修改完成后先执行mysqldump --version命令,确认不再抛出未知变量错误后,再执行完整备份命令验证备份功能正常即可。
内容的提问来源于stack exchange,提问作者tealy
相关产品推荐
相关产品推荐

