忘记 mysql 8.0 root 密码 怎么修改

本文copy自 Centos7重置Mysql 8.0.1 root 密码

问题产生背景:

安装完 最新版的 mysql8.0.1后忘记了密码,向重置root密码;找了网上好多资料都不尽相同,根据自己的问题总结如下:

第一步:修改配置文件免密码登录mysql

vim /etc/my.cnf

1.2 在 [mysqld]最后加上如下语句 并保持退出文件;

skip-grant-tables

1.3 重启mysql服务:

service mysqld restart
第二步免密码登录到mysql上;直接在命令行上输入:

mysql
//或者
mysql -u root -p
//password直接回车
第三步: 给root用户重置密码;

3.1 首先查看当前root用户相关信息,在mysql数据库的user表中;

select host, user, authentication_string, plugin from user;
host: 允许用户登录的ip‘位置’%表示可以远程;

user:当前数据库的用户名;

authentication_string: 用户密码;在mysql 5.7.9以后废弃了password字段和password()函数;

plugin: 密码加密方式;

3.2 如果当前root用户authentication_string字段下有内容,先将其设置为空;

use mysql;
update user set authentication_string=‘‘ where user=‘root‘;
3.3 退出mysql, 删除/etc/my.cnf文件最后的 skip-grant-tables 重庆mysql服务;

3.4 使用root用户进行登录,因为上面设置了authentication_string为空,所以可以免密码登录;

mysql -u root -p
passwrod:直接回车;
3.5使用ALTER修改root用户密码;

ALTER user ‘root‘@‘localhost‘ IDENTIFIED BY ‘Qian123#‘
至此修改成功; 从新使用用户名密码登录即可;

修改中遇到的问题:

1. 根据网上的这篇文章进行修改,报错;

网友文章:Linux-CentOS7下修改root密码和密码过期问题:

在使用这句话修改密码时报错:

update user set password = password(‘new-password‘) where user = ‘root‘ ;

or

update user set authentication_string= password(‘new-password‘) where user = ‘root‘ ;
报错原因:mysql5.7.6以后废弃了user表中的password字段和 password() 方法;

所以上面的方法对 mysql8.0.1是行不通的;

2. 根据网友的这篇文章进行修改,报错;

网友文章: 修改MySQL 5.7.9版本的root密码方法以及一些新变化整理

3. 参考MYSQL8的官网文档, 感觉写的也很水;

MySQL8官网文档: mysql8.0 reference for manual

4. 一定不要采取如下形式该密码:

use mysql;
update user set authentication_string="newpassword" where user="root";
这样会给user表中root用户的authentication_string字段下设置了newpassword值;

当再使用ALTER USER ‘root‘@‘localhost‘ IDENTIFITED BY ‘newpassword‘时会报错的;

因为authentication_string字段下只能是mysql加密后的41位字符串密码;其他的会报格式错误;

*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE

————————————————
版权声明:本文为CSDN博主「Coder-Qian」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ManagementAndJava/java/article/details/80098525

原文地址:https://www.cnblogs.com/mashuai-191/p/12703592.html

时间: 2024-10-05 00:13:43

忘记 mysql 8.0 root 密码 怎么修改的相关文章

windows下忘记mysql超级管理员root密码的解决办法

今天帮一个朋友找回了MYSQL的超级管理员ROOT密码,开始输入命令的时候少打了个"点"害的折腾了几个小时,终于解决了,写个教程,方便以后使用! 如果你是服务器是 windows xp/2000/2003/nt 都可以使用这个方法来找回丢失 MYSQL超级管理员root的密码 1,停止MYSQL服务,CMD打开DOS窗口,输入 net stop mysql 2,在CMD命令行窗口,进入MYSQL安装目录 比如 d:mysql20080505in 3,进入mysql安全模式,即当mys

忘记CentOS 7.0 root密码后,更改密码的方法如下

1.启动画面出来时,选择第一项,并按下e字母键.如下图 2.移动光标键,找到linux16这一行.如下图 3.如图,将ro改成成为rw init=sysroot/bin/sh,并执行ctrl-x 4.执行以下命令,如下图 5.最后重启,进入系统

CentOS6.7 Mysql5.6.35版本 源码编译+Mysql数据库忘记root密码如何修改

源码编译MySQL [[email protected] ~]# yum install cmake nucrses-devel –y      //安装编译环境及终端操作的开发包 -- Installed: cmake.x86_64 0:2.8.12.2-4.el6 Dependency Installed: libarchive.x86_64 0:2.8.3-7.el6_8 Complete! 下载软件包 [[email protected] ~]# wget http://ftp.ntu.

mac忘记root密码,修改密码

能登陆系统,但是忘记了root密码,修改root密码如下: sudo bashpassword:输入你的当前用户密码bash-3.2# ok done!其实没啥,因为登陆当前用户默认在系统sudoers的list里. password root 输入新的密码

不小心忘记了linux的root密码

很多时候,由于root用户,我们并不常用,所以忘记密码是常有的事,那么我们如何解决呢?我目前知道的有两种开机时进入单用户模式可以直接修改root密码: 方法一: 第一步: 开机时,会进入一个3秒的等待状态,如下图所示 这个时候需要你快速的将鼠标点入屏幕(我用的虚拟机,所以需要手动点入进去),紧接着就会出现下面的状态: 第二步: 这个时候,按e键进入grub编辑状态,会出现如下界面: 第三步: 选择再第二项(kernel内核开头的),按e键进入编辑,进入: 第四步: 在末尾手动添加上 single

MySQL 5.6 root密码丢失,使用mysqld --skip-grant-tables

MySQL 5.6 root密码丢失,(window平台)使用mysqld –skip-grant-tables启动MySQL服务,出现警告: 1 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.Please use --explicit_defaults_for_timestamp server option (seedocumentation for more details) 解决方法: Step1: 1 进 入c

MySQL忘记root密码后修改

MySQL忘记root密码后可以使用下面的方法修改. 1.登录MySQL所在的服务器,手工kill掉MySQL进程 kill `cat $mysql_data_dir/hostname.pid` $mysql_data_dir/hostname.pid为MySQL数据目录,它记录了MySQL服务的进程号. [[email protected] ~]# ps -ef |grep mysql root      6602     1  0 21:39 ?        00:00:00 /bin/s

Linux下使用MySQL——忘记root密码及修改MySQL默认编码

概述: 本博客不再对MySQL的语法进行讲解和说明,想了解或熟悉的朋友请自行百度或Google学习.本博客主要是针对MySQL除语法之外的总结,希望能够也能帮助到你. 1.CentOS6.x下MySQL忘记root密码解决方法 Ⅰ. 修改MySQL的登录设置 # vim /etc/my.cnf 在[mysqld]段中加上一句:skip-grant-tables Ⅱ. 重启服务 # service mysqld restart Ⅲ. 登录Mysql,修改密码信息 # mysql mysql> US

mysql多实例忘记root密码,修改密码

1.修改配置参数 /etc/my.cnf 在 [mysqld3306] 下面加上: skip-grant-tables 2.重启MySQL mysqld_multi start 3306 3.修改密码 mysql -h127.0.0.1 -P3306 -uroot update mysql.user set password=password('test_new2_password') where user= 'root'; flush privileges; 关闭数据库 mysqld_mult