1、修改登录设置
vim /etc/my.cnf #或/etc/mysql/my.cnf
[mysqld]
skip-grant-tables #新加
2、重启mysql服务
3、直接mysql登录,并修改密码
update mysql.user set authentication_string=password("新密码") where User='root';
#5.7中保存密码字段是这个,desc先看下保存密码字段。其他版本一般如下修改
#mysql> UPDATE mysql.user SET Password = password ('new-password') WHERE User = 'root' ;
#如遇到报错 You must reset your password using ALTER USER statement before executing this statement.
原因是要修改密码或密码有效期已到,需要执行
1. alter user user() identified by "123456" ;修改密码后一般就解决问题,不行的话看下面的步骤
2. ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; #设置密码永不过期,改回默认方法 alter user 'root'@'localhost' password expire default
3. 或者 set global default_password_lifetime=0 或直接写在配置文件里面,过期时间为0表示永不过期,全局生效。推荐上中方法仅特定用户密码不过期
flush privileges; #使用update修改密码必须要执行此步
或者#经测试加skip-grant-tables不能执行以下操作
set password=passwprd('新密码');#不须刷新授权表,完整格式 SET PASSWORD FOR 'root'@'localhost'=PASSWORD('newpassword');
4、修改配置文件
删除
skip-grant-tables
重启服务
方法二:
停止mysql服务
使用--skip-grant-tables启动数据库,忽略授权登录验证
mysqld_safe --skip-grant-tables --user=mysql &
mysql #登录后修改密码,多实例要加-S "SOCKET"
3.关闭数据库,重新启动
mysqladmin -uroot -p'newpassword' shutdown #关闭,或用kill,pkill杀掉