liunx重制mysql密码

长时间没有使用服务器了,服务器上mysql数据库密码忘记了,找了很多文章,最后 按照这个文章解决了

1. 修改配置文件,目的是绕过登陆拥有root权限进数据库 

vim /etc/my.cnf # 打开配置文件 然后在[mysqld]下方插入以下一句话
skip-grant-tables # 这句话的意思是跳过登录
# 然后保存退出
systemctl restart mysqld # 重启mysql服务
mysql -u root -p
# 此时不用输入密码 直接回车就可进入
use mysql; # 切换数据库
update user set authentication_string=password("123456") where user='root'; # 更新密码


 

ps: 5.6及以下版本的mysql 把命令中的 'authentication_string' 改成 'password' 就行了

2. 如果没有root用户就需要新增root 用户

先查询

select user,host authentication_string from user;  #5.7及以上mysql版本 查询user表内容

如果有root用户 那么跳过2。直接3

如果没有 那么看下面,先创建

create user 'root'@'localhost' identified by '123456';


 

如果此步骤报以下错误:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

则运行:(不报错的就跳过)

flush privileges;



再次运行:

create user 'root'@'localhost' identified by '123456';



如果还报错,则运行:(不报错的就跳过)

drop user 'root'@'localhost';



再再次运行:(应该是不会报错了,报错当我没说)

create user 'root'@'localhost' identified by '123456';

3.然后赋予root用户权限:

grant all privileges on *.* to 'root'@'localhost' with grant option;
flush privileges;
exit;


 

4.修改配置文件回来 把/etc/my.cnf中的那句话注释掉

vim /etc/my.cnf

#skip-grant-tables

# 保存并退出
systemctl restart mysqld # 重启mysql服务
# 再次尝试登录
mysql -u root -p
# 输入刚刚重新设置的密码 即可登录成功


 

5. 赋予root用户远程登陆权限,即本地可以访问服务器上的mysql(方便本地调试)

# 首先需要登录到mysql
use mysql; # 切换数据库
update user set host='%' where user='root'; # 允许root用户远程登录
flush privileges; # 刷新权限

如果提示ERROR 1062 (23000): Duplicate entry ‘%-root’ for key ‘PRIMARY’ 错误,说明有多个ROOT用户纪录在USER表中了

select host from user where user = 'root';

查看一下host是否已经有了%这个值,有了就可以了.

liunx重制mysql密码_第1张图片

然后刷新权限: flush privileges; 

重启即可使用 

参考文章: 【Mysql登录失败&修改密码&新增root用户&修改密码策略】Access denied for user ‘root‘@‘localhost‘ (using password: NO)_狍狍子的博客-CSDN博客

mysql在更改root远程连接时候报错:Duplicate entry ‘%-root‘ for key ‘PRIMARY‘_duplicate entry '%-root' for key 'primary_张国荣家的弟弟的博客-CSDN博客

你可能感兴趣的:(mysql,数据库)