錯誤重現:
命令行或者shell腳本中執行以下命令,如果您當前服務器mysql版本是大於5.6的,則會出現警告:Warning: Using a password on the command line interface can be insecure. 這是mysql避免明文密碼出現在腳本中做的安全提升
mysqldump -h$1 -u$2 -p$3 -P3306 -B ${dbnames} --single-transaction --triggers --routines --events --master-data=2 -F | gzip > $data_dir/$1_`date +%Y%m%d`.sql.gz
警告信息看着不爽,特別是crontab定時執行shell時,郵件會收到“原本該忽視”的stderr標准錯誤。
解決方案:
這里只說一個,利用 mysql_config_editor 進行預先設置連接信息,具體做法如下:
1、設置登錄信息
mysql_config_editor set --login-path=mall --host=mall.palcent.com --user=dumper -p
設置完畢,會在用戶主目錄%home%下生成一個.mylogin.cnf 文件,比如root用戶,則生成 /root/.mylogin.cnf 。
2、查看當前主機上的加密文件
mysql_config_editor print --all
3、使用加密文件
登錄Mysql
mysql --login-path=mall # Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 375021
備份數據庫
mysqldump --login-path=mall --databases ${dbnames} --single-transaction --triggers --routines --events --master-data=2 -F | gzip > $data_dir/$1_`date +%Y%m%d`.sql.gz
當然還有其他解決方案, 請自行參考以下參考鏈接!
參考鏈接:
https://www.cnblogs.com/rockbes/p/3972763.html (mysql_config_editor 用法)
https://blog.csdn.net/zxssoft/article/details/89667874
https://dev.mysql.com/doc/refman/8.0/en/password-security-user.html (官方解決方案)