前言:在不考虑到原来用户对关联数据库的授权问题的情况下,有以下两种思路解决
#1、安全模式修改
第一步:关闭数据库服务:
[root@db01 ~]#/etc/init.d/mysqld stop
第二步:开启特殊启动模式:(关闭密码登录验证模块)
[root@db01 ~]#mysqld_safe --skip-grant-tables --skip-networking &
(执行了这条命令,只能够在本地进行mysql登录操作)
[root@db01 ~]#mysqld_safe --skip-grant-tables
(执行了这条命令,远程和本地都能够进行mysql登录操作)
**********************************************************************
# 命令及参数说明:
mysqld_safe 进入安全检测模式
--skip-grant-tables 关闭一表检查
--skip-networking 关闭网络功能(关闭tcp/ip协议)
**********************************************************************
第三步:登录数据库,创建用户
登录数据库命令:mysql
如果登录不进去的话,就直接使用ps -ef | grep mysql 查看上面第二步使用的后台执行进程号,使用kill 进程号把后台进程都杀死,再使用第二步里面的mysqld_safe --skip-grant-tables --skip-networking & 命令;最后执行mysql进行登录
[root@db01 ~]#mysql
mysql> user mysql;
mysql> select user,host,password from mysql.user;
说明:由于第二步我们已经关闭了用户验证功能;所以在这里使用create创建用户不行的;我们应该对user表进行添加数据就行了
mysql> insert into(user,host,password) values('root','localhost',PASSWORD('test123'))
根据报错提示:得到最终下面的创建用户的命令
mysql> insert into user(user,host,password,ssl_type,ssl_cipher,x509_issuer,x509_subject) values('root','localhost',PASSWORD('test123'),'','','','');
第四步:测试是否设置成功
No1:检查user表是否创建用户成功
mysql> select user,host,password from user;
No2:退出数据库,使用`kill+进程号` 杀死在后台执行的mysql进程
No3:正常启动mysql服务:
[root@db01 ~]# /etc/init.d/mysqld stop
[root@db01 ~]# /etc/init.d/mysqld start
No4:使用我们刚才创建的用户名和密码登录
[root@db01 ~]# mysql -uroot -ptest123 ----> 最终显示登录成功
#2、登录模式修改
说明:我给我们还没有退出数据库的话,直接重新创建用户名和主机域就行了(和上面忘记密码第二种方法思路一样)
请参考:https://www.cnblogs.com/l75790/p/12845827.html