在 shell(.sh 文件)中,我正在尝试更新用户“root”的 MYSQL 密码。
目前我有这个,这是安全且正确的方法吗?我不想要提示。
我也想知道“mysqladmin”和“mysql”的帐户是否相同。
#Variables for User and Pass
USER="root"
PASS="test"
mysqladmin -u root password $PASS
#Set Root User Password for all Local domains
sudo mysql --user=$USER --password=$PASS -e "SET PASSWORD FOR 'root@localhost' = PASSWORD('secret');"
sudo mysql --user=$USER --password=$PASS -e "SET PASSWORD FOR 'root@127.0.0.1' = PASSWORD('secret');"
sudo mysql --user=$USER --password=$PASS -e "SET PASSWORD FOR 'root@::1' = PASSWORD('secret');"
#Drop the Any User
sudo mysql --user=$USER --password=$PASS -e "DROP USER ''@'localhost';"
更新
考虑到 tadman 和 b600 的反应。
所以这样的事情会是个好主意吗?
防止密码将显示在 shell 历史记录中。
# bootstrap.sh
USER="root"
PASS="test"
sudo mysqladmin -u root password $PASS
sudo mysql --user=$USER --password=$PASS -e < /tmp/users.sql
rm -f /tmp/users.sql
# users.sql
SET @password = secret;
DELETE * FROM mysql.user WHERE users IS NOT 'root';
SET PASSWORD FOR 'root@localhost' = PASSWORD(password);
SET PASSWORD FOR 'root@127.0.0.1' = PASSWORD(password);
SET PASSWORD FOR 'root@::1' = PASSWORD(password);