由于公司要求对所有生产环境备份,因此需要把oracle、mysql、sqlerver的数据库全部备份一下,但是我只会oracle,没办法,学吧!
经过一段时间的学习,了解了一下mysqldump,其实很简单,比oracle简单的多,但是在一个问题上一直卡着,脚本如下(windows操作系统的bat批处理脚本)
set d=%date:~0,4%%date:~5,2%%date:~8,2% c: mysqldump -uroot -ptest@2017^ --all-databases > D:\backup\db_test\db_test_%d%.sql |
报错如下;
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
开始怀疑是密码中@符号的错误,于是加了单引号,还是不行(linux写脚本的习惯...)
由于是生产环境,不能做测试,因此后来拿测试环境测,在经过更改脚本后成功,更改后如下:
set d=%date:~0,4%%date:~5,2%%date:~8,2% set pw=test@2017^ c: mysqldump -uroot -p%pw% --all-databases > D:\backup\db_test\db_test_%d%.sql |
于是又在生产环境做,还是失败了,报错相同!mdzz...什么鬼
在多方打听和搜索,只是提供更改密码和创建用户的方式,生产环境怎么能乱改动,管理员也不允许变动过大!
后来终于咨询到,密码上添加双引号即可!!!
set d=%date:~0,4%%date:~5,2%%date:~8,2% c: mysqldump -uroot -p"test@2017^" --all-databases > D:\backup\db_test\db_test_%d%.sql |
成功!!没错,就是这么简单!!
在此感谢朋友们的耐心回答!