mysql数据库root权限丢失(密码丢失)

今天同事,调整mysql安全,在删除用户的时候误删了 [email protected],后来加进去了,但是在登录发现数据库很多库都没有了,顿时懵逼,考虑恢复数据,稍后我看到了,想起当年也出现过类似情况,主要是因为root用户没有权限,所以跳过授权表,经过查询权限,真的缺少,所以将其都由N改为Y ,在次测试,OK,以下是处理步骤。

第一步,跳过授权表登录mysql

1、pkill 停止 实例进程
2、mysqld_safe --defaults-file=/data/3306/my.cnf --skip-grant-tables &
3、mysql -S /data/3306/mysql.sock
4、UPDATE mysql.user SET password=PASSWORD(‘oldboy123‘) WHERE user=‘root‘ and host=‘localhost‘;
5、flush privileges;
6、kill掉mysqld_safe 进程
7、/etc/init.d/msyql start  正常启动
登录即可 mysql -uroot -poldboy123

第二步、修改权限(也可以初始化root密码

mysql> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> 
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| oldboy_gbk         |
| performance_schema |
| qiuyuetao          |
| test               |
+--------------------+
6 rows in set (0.00 sec)
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
24 rows in set (0.00 sec)
更新的MYSQL.USER表的所有字段中为N的为Y就可以了。
update user set Select_priv =‘Y‘ where user = ‘root‘;
update user set Insert_priv =‘Y‘ where user = ‘root‘;
update user set Update_priv =‘Y‘ where user = ‘root‘;
update user set Delete_priv =‘Y‘ where user = ‘root‘;
update user set Create_priv =‘Y‘ where user = ‘root‘;
update user set Drop_priv =‘Y‘ where user = ‘root‘;
update user set Reload_priv =‘Y‘ where user = ‘root‘;
update user set Shutdown_priv =‘Y‘ where user = ‘root‘;
update user set Process_priv =‘Y‘ where user = ‘root‘;
update user set File_priv =‘Y‘ where user = ‘root‘;
update user set Grant_priv =‘Y‘ where user = ‘root‘;
update user set References_priv =‘Y‘ where user = ‘root‘;
update user set Index_priv =‘Y‘ where user = ‘root‘;
update user set Alter_priv =‘Y‘ where user = ‘root‘;
update user set Show_db_priv =‘Y‘ where user = ‘root‘;
update user set Super_priv =‘Y‘ where user = ‘root‘;
update user set Create_tmp_table_priv =‘Y‘ where user = ‘root‘;
update user set Lock_tables_priv =‘Y‘ where user = ‘root‘;
update user set Execute_priv =‘Y‘ where user = ‘root‘;
update user set Repl_slave_priv =‘Y‘ where user = ‘root‘;
update user set Repl_client_priv =‘Y‘ where user = ‘root‘;
update user set Create_view_priv =‘Y‘ where user = ‘root‘;
update user set Show_view_priv =‘Y‘ where user = ‘root‘;
update user set Create_routine_priv =‘Y‘ where user = ‘root‘;
update user set Alter_routine_priv =‘Y‘ where user = ‘root‘;
update user set Create_user_priv =‘Y‘ where user = ‘root‘;
update user set Event_priv =‘Y‘ where user = ‘root‘;
update user set Trigger_priv =‘Y‘ where user = ‘root‘;
时间: 04-30

mysql数据库root权限丢失(密码丢失)的相关文章

设置、修改及找回 MySQL 数据库 root 用户的密码

1. MySQL 数据库用户安全策略介绍 安装 MySQL 数据库后,默认的管理员 root 密码为空,很不安全,需要设置密码.针对 MySQL数据库的用户处理,还有更严格的做法: ① 增加 system 并提升权限为超级管理员,即和 root 等价的用户,只是名字不同.     mysql> grant all privileges on *.* to [email protected]'localhost' identified by 'alinuxer123' with grant opt

重设MySQL数据库root用户的密码

在已知MYSQL数据库的ROOT用户密码的情况下,修改密码的方法: 1.  在SHELL环境下,使用mysqladmin命令设置:mysqladmin –u root –p password "新密码"   回车后要求输入旧密码 2.  在mysql>环境中,使用update命令,直接更新mysql库user表的数据: Update mysql.user  set  password=password('新密码')  where  user='root'; flush   pri

MySQL数据库root权限丢失解决方案

一天不小心把ROOT的权限改到最小了(只能登录,什么都做不了),这可急死我了.重装的话太麻烦,而且里面有很多的用户,一个个重新弄不知道到什么时候. 后来我想了一个办法,先把当前服务器的MySQL服务停止,把MySQL DATa目录下的mysql目录改名为mysql_OLD,到另一个服务器下把mysql目录下的/data/mysql目录复制到对应目录,然后启动MySQL服务,使用另一服务器下的root 的帐号登录到PHPmyadmin,进去之后可以看到有全部的操作权限了,但这个数据表中没有当前服务

如何修改Linux服务器的MySQL数据库root密码

测试服务器密码知道的人太多了,mysql root账号密码竟然被修改.... 总结一下修改mysql数据库root密码的办法,呵呵大 分两种情况一.拥有原来的myql的root的密码: 方法一:在mysql系统外,使用mysqladmin# mysqladmin -u root -p password "test123"Enter password: [输入原来的密码] 方法二:通过登录mysql系统,# mysql -uroot -pEnter password: [输入原来的密码]

xampp默认mysql数据库root密码的修改

因为安装xampp后的mysql默认用户root的密码为空,而比如部署Testlink时需要提供数据库密码,此时就需要给root设定密码(网上有些方法,大同小异,但是可能都未标明关键点,未一些出上手的童鞋造成了不成功). 如下介绍两个方法: 方法一:通过phpmyadmin xampp也是通过phpmyadmin管理的,所以我们能登录到phpmyadmin,在浏览器地址上输入http://localhost/phpmyamdin 进入到数据库控制面板,然后选择名称为mysql数据库,如图,可从中

mysql 数据库修改用户名和密码

因为经常修改数据库密码,也找到了几种修改数据库密码的方式,在这里给大家介绍下供大家参考通过navicat 管理数据库客户端来修改数据库密码: 选择数据库 --- 点击导航条的用户  --- 编辑用户 --- 即可修改数据库. 命令行修改数据库密码: 1.打开mysql.exe和mysqld.exe所在的文件夹,复制路径地址 2.打开cmd命令提示符,进入上一步mysql.exe所在的文件夹. 3.输入命令  mysqld --skip-grant-tables  回车,此时就跳过了mysql的用

MySQL数据库远程访问权限如何打开(两种方法)

MySQL数据库远程访问权限如何打开(两种方法) 下载GPL版本安装 MySQL Community Edition(GPL) Community (GPL) Downloads 在我们使用mysql数据库时,有时我们的程序与数据库不在同一机器上,这时我们需要远程访问数据库.缺省状态下,mysql的用户没有远程访问的权限. 下面介绍两种方法,解决这一问题. 1.改表法 可能是你的帐号不允许从远程登陆,只能在localhost.这个时候只要在localhost的那台电脑,登入mysql后,更改 "

mysql数据库设置密码及忘记密码时的修改方法

环境介绍:我用的测试环境是Red Hat linux6 版本安装Mysql5.7的server.之前有讲过mysql server安装过程并能用navicat工具连接上mysql server.下面要说的是如何给mysql设置账户密码登录.在刚安装服务时,我在/etc/my.cnf 配置文件中添加了一条 skip-grant-tables 让它可以不进行密码验证就能登录到mysql server上.下面介绍的内容是mysql数据库设置密码及忘记密码时的修改方法. 注:MySQL5.7在初始安装后

CentOS中对MySql的root用户重置密码

由于一般的修改ini文件来完成无密码登录数据库容易造成较大风险,所以使用修改启动服务参数的方式来更新user表,达到无密码登陆的目的. 1.关闭系统下运行的mysql服务 (1)杀掉进程号达到关闭目的 先使用ps -ef|grep mysql查找进程号,然后使用kill+ PID的方式杀掉进程. (2)使用systemctl工具来关闭mysql服务 systemctl stop mysql 2.修改mysql的启动选项更新user表,达到无密码登陆的效果 systemctl set-enviro