Lnmp安裝一段時間后,,MYSQL很少用到root賬號,久而久之,,密碼都忘記了,按印象來輸入總是提示Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' 于是在網(wǎng)上找了下,,試了幾個方法,,問題依舊沒能解決。不知道是不是緩存的原因還是怎樣,,mysql進程是關(guān)掉重啟過,,系統(tǒng)沒重新啟。
最直接的方法下載官方的修改腳本
執(zhí)行如下命令:wget http://soft.vpser.net/lnmp/ext/reset_mysql_root_password.sh;sh reset_mysql_root_password.sh
按提示操作,,有提示修改成功,,但是卻登陸不了。
腳本代碼如下:#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export
PATH
# Check if user is root
if [ $(id -u) != "0" ]; then
printf
"Error: You must be root to run this script!\n"
exit
1
fi
echo
"=========================================================================\n"
printf
"Reset MySQL root Password for LNMP , Written by Licess \n"
printf
"=========================================================================\n"
printf
"LNMP is a tool to auto-compile & install Nginx+MySQL+PHP on Linux
\n"
printf "This script is a tool to reset mysql root password for lnmp
\n"
printf "For more information please visit http://www.lnmp.org \n"
printf "\n"
printf
"Usage: sh reset_mysql_root_password.sh\n"
printf
"=========================================================================\n"
mysql_root_password=""
read -p "(Please input New MySQL root
password):" mysql_root_password
if [ "$mysql_root_password" = "" ];
then
echo "Error: Password can't be NULL!!\n"
exit
1
fi
printf "Stoping MySQL...\n"
/etc/init.d/mysql stop
printf "Starting
MySQL with skip grant tables\n"
/usr/local/mysql/bin/mysqld_safe
--skip-grant-tables >/dev/null 2>&1 &
printf "using mysql to
flush privileges and reset password\n"
sleep 10
printf "update user set
password = Password('$mysql_root_password') where User =
'root'\n"
/usr/local/mysql/bin/mysql -u root mysql << EOF
update
user set password = Password('$mysql_root_password') where User =
'root';
EOF
reset_status=`echo $?`
if [ $reset_status = "0" ]; then
printf
"Password reset succesfully. Now killing mysqld softly\n"
killall
mysqld
sleep 10
printf "Restarting the actual mysql
service\n"
/etc/init.d/mysql start
printf "Password successfully reset to
'$mysql_root_password'\n"
else
printf "Reset MySQL root password
failed!\n"
fi
第二種,,也是成功的方法如下:
/etc/init.d/mysql
stop (service mysqld stop ) 先關(guān)掉mysql
/usr/bin/mysqld_safe
--skip-grant-tables
另外開個SSH連接
[root@localhost
~]# mysql
mysql>use
mysql
mysql>update
user set password=password("123456") where user="root";
mysql>flush
privileges;
mysql>exit
pkill
-KILL -t pts/0 可將pts為0的**用戶(之前運行mysqld_safe的用戶窗口)強制踢出
正常啟動
MySQL:/etc/init.d/mysql start (service mysqld start)