Lnmp安装一段时间后,MYSQL很少用到root账号,久而久之,密码都忘记了,按印象来输入总是提示Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' 于是在网上找了下,试了几个方法,问题依旧没能解决。不知道是不是缓存的原因还是怎样,mysql进程是关掉重启过,系统没重新启。
最直接的方法下载官方的修改脚本
执行如下命令: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 ) 先关掉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)