mysql误删root用户或者忘记root密码解决方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql误删root用户或者忘记root密码解决方法相关的知识,希望对你有一定的参考价值。
参考技术A 解决方法一:到其他安装了Mysql的服务器(前提是要知道该服务器上Mysql的root用户密码),打开【Mysql的安装目录/var/mysql】,将其中的user.frm、user.MYD、user.MYI三个文件拷贝到出问题服务器的【Mysql的安装目录/var/mysql】目录中。然后重启服务器。
解决方法二:
修改你的my.ini或my.cnf文件,在
[mysqld]
节下加入下面一行
skip-grant-tables
然后保存并重启
MySQL
服务。
下面你就可以以任何用户名密码登陆数据库了。
(1)如果是误删了root用户,则使用下面的语句创建root用户:
insert
into
user
set
Host='localhost',User='root',Password=Password('111111'),select_priv='y',
insert_priv='y',update_priv='y',
Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y';
(2)如果是忘记了root用户的密码,则使用下面的语句修改root密码:
update
user
set
Password=Password('111111')
where
User='root';
mysql误删root用户
1、先结束mysqld进程
#killall
mysqld进入mysql
#/usr/local/mysql/bin/mysql
不加载grant_tables而进入mysql
#mysqld_safe
–skip-grant-tables
&
mysql>
use
mysql
Database
changed
mysql>
select
*
from
user;
Empty
set
(0.00
sec)
mysql>
insert
into
user
set
user='root',ssl_cipher=”,x509_issuer=”,x509_subject=”;
(增加root用户的表)
Query
OK,
1
row
affected,
3
warnings
(0.00
sec)
(这时可能会提示某字段如ssl_cipher无默认值,
只要加上,ssl_cipher=”;
其字段如有提示依次添加就OK了)
update
user
set
Host='localhost',select_priv='y',
insert_priv='y',update_priv='y',
Alter_priv='y',delete_priv='y',create_priv='y',drop_priv='y',reload_priv='y',shutdown_priv='y',Process_priv='y',file_priv='y',grant_priv='y',References_priv='y',index_priv='y',create_user_priv='y',show_db_priv='y',super_priv='y',create_tmp_table_priv='y',Lock_tables_priv='y',execute_priv='y',repl_slave_priv='y',repl_client_priv='y',create_view_priv='y',show_view_priv='y',create_routine_priv='y',alter_routine_priv='y',create_user_priv='y'
where
user='root';
(这里面是修改root用户的权限)
mysql>
quit;
2、带权限正常启动mysql
#service
mysqld
start
3、使用root用户登录(如果有phpadmin就直接用root空密码登录再修改密码或权限就可以了)
#mysql
-u
root
-p
mysql>
update
user
set
password=password('123456′)
where
user='root';
Query
OK,
1
row
affected
(0.00
sec)
Rows
matched:
1
Changed:
1
Warnings:
0
mysql>
flush
privileges;
mysql>
quit
mysql误删root用户
在操作mysql时误删除root用户,如何进行恢复
在安装hive时候误删除root用户,存在的用户没有权限,解决方法如下。
1、首先在/etc/my.cnf文件中 mysqlID下面添加
skip-grant-tables
用来跳过安全密码验证
2、在服务上重启mysql服务
[root@master2 bin]# systemctl restart mysqld.service
3、使用mysql直接进入mysql
[root@master2 bin]# mysql
4、使用mysql数据库
mysql> use mysql;
5、重新添加用户
insert into user(user,host,password,ssl_type,ssl_cipher,x509_issuer,x509_subject) values(\'root\',\'localhost\',PASSWORD(\'MyPass@123\'),\'\',\'\',\'\',\'\');
6、对新添加用户进行授权
mysql> grant all privileges on *.* to root@"loaclhost" identified by \'MyPass@123\';
此时报错,因为处于skip-grant-tables
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
解决:
先执行
flush privileges;
再执行
mysql> grant all privileges on *.* to root@"loaclhost" identified by \'MyPass@123\';
flush privileges;
此时查看新添加用户的权限
mysql> select * from mysql.user where user=\'root\'\\G;
此时退出mysql,在服务上的/etc/my.cnf文件上删除掉skip-grant-tables
重启mysql服务
[root@master2 bin]# vim /etc/my.cnf
[root@master2 bin]# systemctl restart mysqld.service
重新初始化
[root@master2 bin]# schematool -initSchema -dbType mysql
以上是关于mysql误删root用户或者忘记root密码解决方法的主要内容,如果未能解决你的问题,请参考以下文章