重置 MySQL 的 root 账户密码

Links:

Steps:

# kill $(cat /var/run/mysqld/mysqld.pid)
systemctl stop mysqld && systemctl status mysqld

## MySQL 5.7.6 and later:
echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'passw0rd';" > /root/mysqlinit
## MySQL 5.7.5 and earlier:
echo "SET PASSWORD FOR 'root'@'localhost' = PASSWORD('passw0rd');" > /root/mysqlinit

chown mysql: /root/mysqlinit

mysqld --user=mysql --init-file=/root/mysqlinit &

## test: mysql -uroot -ppassw0rd

rm -f /root/mysqlinit

# change user mysql's shell in /etc/passwd
systemctl start mysqld && systemctl status mysqld
## or, refer to https://www.linuxidc.com/Linux/2016-03/128940.htm

sudo systemctl set-environment MYSQLD_OPTS="--user=mysql --skip-grant-tables --skip-networking"
sudo systemctl restart mysqld.service

mysql
mysql shell>
FLUSH PRIVILEGES;

## MySQL 5.7.6 and later:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'passw0rd';
## MySQL 5.7.5 and earlier:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('passw0rd');

## If the ALTER USER statement fails to reset the password, try repeating the procedure using the following statements to modify the user table directly:
UPDATE mysql.user SET authentication_string = PASSWORD('passw0rd') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

exit;
mysql shell>

sudo systemctl unset-environment MYSQLD_OPTS
sudo systemctl restart mysqld.service

猜你喜欢

转载自blog.csdn.net/weixin_34410662/article/details/86845413
今日推荐