MySQL超级用户的密码忘记了怎么办

1.1 MySQL 5.7x版本的解决方法

1.1.1 第一种方法

使用其它具有超级权限的用户进行更改(可以不用停服务),例如:chenliang@%用户管理

所有的库(*.*),权限为all

#在命令行登录相应的实例

mysql -uchenliang -p -h127.0.0.1 -P3306

#使用update命令修改root@localhost用户的密码

update mysql.user set authentication_string=PASSWORD('root') where user='root' and host='localhost';

#查看修改过后的root@localhost用户的密码是否加密,以及是否存在过期的问题

select user,host,authentication_string,password_expired from mysql.user where user='root' and host='localhost';

#刷新权限并退出当前用户的登录

flush privileges;

exit;

#查看修改过的密码是否生效

mysql -uroot -proot -S /data/mysql/3306/mysql.sock -e "show databases;"

#查看mysql的启动脚本是否需要修改

若mysql启动脚本中停止mysql相应实例的方式为“mysqladmin -uroot -p密码 -S path/mysql.sock

shutdown”的方式,那么就得修改其中的相应密码,否则无法用该脚本停止mysql服务

1.1.2 第二种方法

在没有其它具有超级权限的用户情况下(需要停止服务),在命令行用--skip-grant-tables

#查看mysql相应实例的启动脚本的停止若的方法

A:若停止脚本的方法为:mysqladmin -uroot -p密码 -S path/mysql.sock shutdown,那么

ps -ef|grep mysql

kill PID号 注意:不能用kill -9(会丢失数据)

B:若停止脚本的方法不为:mysqladmin -uroot -p密码 -S path/mysql.sock shutdown,那么(例如)

/data/mysql/3306/mysqld stop

#命令行启动mysql相应的实例:例如

mysqld_safe --defaults-file=/data/mysql/3306/my.cnf --skip-grant-tables &

ps -ef|grep mysql

netstat -lntup|grep 3306

#登录mysql相应的实例:例如:

mysql -uroot -p -S /data/mysql/3306/mysql.sock ç提示输入密码时,直接回车

#修改root@localhost的密码

update mysql.user set authentication_string=PASSWORD('root') where user='root' and host='localhost';

#查看root@localhost修改过的密码是否加密,是否存在过期

select user,host,authentication_string,password_expired from mysql.user where user='root' and host='localhost';

#刷新权限并退出当前登录

flush privileges;

exit;

#测试修改后的密码是否生效

mysql -uroot -p -S /data/mysql/3306/mysql.sock -e "show databases;" ç这里输入的密码是root

#检查mysql相应实例的启动脚本的停止若的方法,并重新启动mysql相应实例的服务

A:若停止脚本的方法为:mysqladmin -uroot -p密码 -S path/mysql.sock shutdown,那么

a:修改脚本中的相应密码

b:/data/mysql/3306/mysqld stop

c:/data/mysql/3306/mysqld start

d:netstat -lntup|grep 3306

B:若停止脚本的方法不为:mysqladmin -uroot -p密码 -S path/mysql.sock shutdown,那么(例如)

a:/data/mysql/3306/mysqld stop

b:/data/mysql/3306/mysqld start

c: netstat -lntup|grep 3306

1.1.3 第三种方法

在没有其它具有超级权限的用户情况下(需要停止服务),在my.cnf中加skip-grant-tables

#查看mysql相应实例的启动脚本的停止若的方法

A:若停止脚本的方法为:mysqladmin -uroot -p密码 -S path/mysql.sock shutdown,那么

ps -ef|grep mysql

kill PID号 注意:不能用kill -9(会丢失数据)

B:若停止脚本的方法不为:mysqladmin -uroot -p密码 -S path/mysql.sock shutdown,那么(例如)

/data/mysql/3306/mysqld stop

#在my.cnf配置文件中的[mysqld]模块下添加以下内容,并保存退出

skip-grant-tables

#启动mysql相应的实例,例如:

/data/mysql/3306/mysqld start

#登录mysql相应的实例:例如:

mysql -uroot -p -S /data/mysql/3306/mysql.sock ç提示输入密码时,直接回车

#修改root@localhost的密码

update mysql.user set authentication_string=PASSWORD('root') where user='root' and host='localhost';

#查看root@localhost修改过的密码是否加密,是否存在过期

select user,host,authentication_string,password_expired from mysql.user where user='root' and host='localhost';

#刷新权限并退出当前登录

flush privileges;

exit;

#测试修改后的密码是否生效

mysql -uroot -p -S /data/mysql/3306/mysql.sock -e "show databases;" ç这里输入的密码是root

#删除之前在my.cnf配置文件中[mysqld]模块下添加的skip-grant-tables参数

#检查mysql相应实例的启动脚本的停止若的方法,并重新启动mysql相应实例的服务

A:若停止脚本的方法为:mysqladmin -uroot -p密码 -S path/mysql.sock shutdown,那么

a:修改脚本中的相应密码

b:/data/mysql/3306/mysqld stop

c:/data/mysql/3306/mysqld start

d:netstat -lntup|grep 3306

B:若停止脚本的方法不为:mysqladmin -uroot -p密码 -S path/mysql.sock shutdown,那么(例如)

a:/data/mysql/3306/mysqld stop

b:/data/mysql/3306/mysqld start

c: netstat -lntup|grep 3306

猜你喜欢

转载自blog.51cto.com/11576296/2357323
今日推荐