在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);
答案 0 :(得分:0)
我建议您在本地计算机上以特权用户身份生成密码哈希,并将哈希值传递给密码更改命令。
根据this page,mysql中使用的密码哈希值为SHA1
,您可以使用以下命令生成密码:
echo -n password | sha1sum | awk '{print toupper($1)}'
另外,根据http://dev.mysql.com/doc/refman/5.1/en/set-password.html,您可以使用
'SET PASSWORD FOR 'user@domain' 'PASSWORD HASH GOES HERE' '
就个人而言,我不喜欢在命令行上使用明文密码,因为非特权用户可能会通过ps / ptree / pstree命令看到密码。