服务器的mysql突然连接不上去了,密码也忘记了。只能重新设置密码了
1、使用如下指令打开mysql数据库配置文件(具体的文件路径以实际情况为准)
vim /etc/my.cnf
在虚拟机中直接输入即可
添加如下命令
skip-grant-tables
skip-networking
直接复制进文件即可,加入之后:wq退出并保存
- skip-grant-tables 用于忽略授权表,取消数据库的授权
- skip-networking 用于关闭数据库网络功能,避免其他用户不输入口令远程连接我们的数据库。
- 然后重新启动MySQL服务。
2、登录数据库
mysql -uroot -proot
输入密码123456
3、进入到mysql。然后选择mysql这个数据库
use mysql;
看一下root还存在吗
select user,host from user;
在就更新密码
update mysql.user set password=password('123456') where user='root';
不在就重新创建用户create user 'root'@'localhost' identified by '123456';
localhost表示本地,mysql登入的时候,不用指定ip登入
此步骤可能会报以下错误,没报错的跳过(直接到权限那一步),用一下方法解决:
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this stateme
输入:
flush privileges;
此时再次重新创建用户:
create user 'root'@'localhost' identified by '123456';
再次报错,这步没报错的也是直接跳到赋予权限那一步,报错的以下操作:
drop user 'root'@'localhost';
再次重新创建用户:
create user 'root'@'localhost' identified by '123456';
结果没有再报错,root用户创建成功。
下面赋予root权限:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; #赋予所有库所有表操作权限
mysql> flush privileges;
mysql> exit;
到这一步没有报错,表明已经成功了,不过要把最开始的配置文件恢复:
vim /etc/my.cnf
删除配置文件中的:
skip-grant-tables
退出,重启mysql:
/etc/init.d/mysqld restart
标签:数据库,重置,报错,user,mysql,root,localhost From: https://www.cnblogs.com/SadicZhou/p/17224556.html