【mysql5.7】mysql5.7系列修改root默认密码

mysql5.7系列修改root默认密码

root登录,更改密码,问题就来了,改完密码重启服务输入密码会显示access denied for user root @localhost
密码并没有更改成功于是在百度了一些帖子,主要步骤如下

最好以管理员身份运行cmd
进入bin目录下,然后停止服务器,输入net stop mysql
再输入 mysqld --skip-grant-tables (回车,启动mysql,意思是告诉mysql不需要登录验证)。
然后关掉cmd,再重新打开。
输入mysql -uroot -p 连续按两次回车按钮会直接进入mysql的控制台界面,此时发现登录 root 账号是不需要密码的。

输入update mysql.user set authentication_string=password('123')where user='root';假设密码是123。
最后输入flush privileges;按回车,告诉mysql刷新一下系统权限,此时修改的密码才会生效。
此时密码更改完毕,重新启动mysql服务
显示无法启动,就是这里卡住了,以为没有装好,重头开始 每次改完密码都无法启动服务,如此往复就开始怀疑人生了,
我就不信了 于是删掉服务,注册表,删出mysql所有目录,这时提示进程正在使用中,突然一想我明明服务都启动不了,
会不会是刚才那个跳过验证登录的进程,任务管理器果然找到mysqld.exe进程,
于是重来一遍修改完密码杀掉mysqld.exe进程,再重新启动mysql服务,一切正常。

修改完密码要关掉mysqld.exe进程,再正常启动mysql即可。

下面是具体步骤:

window

1,管理员身份登录命令行,右键使用管理员身份

命令行输入mysqld --skip-grant-tables

2,再打开一个命令行,cd到mysql的bin目录

执行mysql -uroot -p

出现password后直接回车,会发现进入到了mysql命令行

3,切换到mysql数据库,并更新 user 表:

use mysql;

update user set authentication_string = password('root'), password_expired = 'N', password_last_changed = now() where user = 'root';

4,刷新

FLUSH PRIVILEGES;

5,到此,进入任务管理器,一定要将mysql.exe和mysql进程杀掉,然后重启mysql,使用net start mysql

操作系统为centos7 64

1、修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1

这一行配置让 mysqld 启动时不对密码进行验证

2、重启 mysqld 服务:systemctl restart mysqld

3、使用 root 用户登录到 mysql:mysql -uroot -p

4、切换到mysql数据库,更新 user 表:

use mysql;

update user set authentication_string = password('root'), password_expired = 'N', password_last_changed = now() where user = 'root';

在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string

5,刷新

6、退出 mysql,编辑 /etc/my.cnf 文件,删除 skip-grant-tables=1 的内容

7、重启 mysqld 服务,再用新密码登录即可

另外,MySQL 5.7 在初始安装后(CentOS7 操作系统)会生成随机初始密码,并在 /var/log/mysqld.log 中有记录,可以通过 cat 命令查看,找 password 关键字

找到密码后,在本机以初始密码登录,并且(也只能)通过 alter user 'root'@'localhost' identified by 'root' 命令,修改 root 用户的密码为 root,然后退出,重新以root用户和刚设置的密码进行登录即可。

到此以上就是完整的解决方案,在使用过程中出现问题,可以及时联系我!

微信搜索 “智数智媒”  关注公众号!领取更多免费资源包,就在“智数智媒”!

猜你喜欢

转载自blog.csdn.net/hrlee520/article/details/84870280