今天在学习mysql数据库过程中,误删掉了root用户,一直出现 “mysql ERROR 1045 (28000): Access denied for user root”错误,网上查了半天才找到解决办法:
1.编辑mysql配置文件my.ini(windows下叫这个名字)或my.cnf (linux下叫这个名字)找到这个选项skip-grant-tables,如果没有请添加!然后重启mysql服务器。
2.提示符下输入mysql -u root -p就可以不用密码登录了,出现password:的时候直接回车可以进入,不会出现ERROR 1045 (28000),但很多操作都会受限制,因为我们不能grant(没有权限)。
3.执行以下语句:
a: use mysql
b: insert into user set user=’root’;
c: update user set password=password("newpassword") where user="root";
d: 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‘;
e: flush privileges;
4.注释或删除掉第一步配置文件中的skip-grant-tables选项并保存,重启mysql服务器。
重新登陆即可!
注意:mysql服务器版本为5.1.73,linux服务器版本为Centos6.5。