我在使用脚本备份(使用mysqldump)MySQL数据库的时候,因为密码较为复杂(含有!&等特殊字符),总是提示密码不正确,原来的备份命令是(其中somepassword是密码,被我替换掉了):
MYSQL_ROOT_PASSWORD='somepassword' docker exec mysql8 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /opt/mysql-all-databases.sql #或者直接带密码: docker exec mysql8 sh -c 'exec mysqldump --all-databases -uroot -psomepassword' > /opt/mysql-all-databases.sql
错误提示:
mysqldump: [Warning] Using a password on the command line interface can be insecure. mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect
最后的解决办法:
使用--env 参数传递环境变量
docker exec --env MYSQL_ROOT_PASSWORD='somepassword' mysql8 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /opt/mysql-all-databases.sql
文章评论