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