在mysql数据库中恢复MySql root @ localhost用户

时间:2014-02-10 22:14:21

标签: mysql sql

我意外地删除了用户root @ localhost,这是因为我后来发现mysql需要工作,现在,即使密码正确,我也无法使用root登录。我尝试运行mysql ins afe mode:

/usr/bin/mysqld_safe --skip-grant-tables

然后以root身份登录,没有密码,进入mysql数据库,我应该执行:

create user root@localhost;

然后:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' with grant option;
commit;
FLUSH PRIVILEGES;
exit

但是当我尝试使用上面的命令创建用户时,我得到:

ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement

有任何建议如何解决这个问题?非常感谢帮助,谢谢!

编辑:解

谢谢!这解决了我的问题:

  

INSERT INTO mysqluserHostUserPasswordSelect_priv,   Insert_privUpdate_privDelete_privCreate_priv,   Drop_privReload_privShutdown_privProcess_priv,   File_privGrant_privReferences_privIndex_priv,   Alter_privShow_db_privSuper_privCreate_tmp_table_priv,   Lock_tables_privExecute_privRepl_slave_priv,   Repl_client_privCreate_view_privShow_view_priv,   Create_routine_privAlter_routine_privCreate_user_priv,   ssl_typessl_cipherx509_issuerx509_subject,   max_questionsmax_updatesmax_connections,   max_user_connections)VALUES('%','root',   密码('NEW_PASSWORD_HERE'),'Y','Y','Y','Y','Y','Y','Y','Y',   'Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y ','Y',   'Y','Y','Y','Y','','','','','0','0','0','0');

要恢复事件和触发器的权限,我必须访问具有“所有”权限的其他用户,幸运的是我有一个权限,但如果没有权限,可能是不可能的。

2 个答案:

答案 0 :(得分:3)

这应该恢复它而不是重置。

停止mysql服务器。

编辑my.cnf以包含跳过补助金

[mysqld] 
skip_grant_tables

启动mysql。然后只需使用提示符中的mysql命令登录mysql。并插入此查询,确保更新密码new password here

  

INSERT INTO mysqluserHostUserPasswordSelect_priv,   Insert_privUpdate_privDelete_privCreate_priv,   Drop_privReload_privShutdown_privProcess_priv,   File_privGrant_privReferences_privIndex_priv,   Alter_privShow_db_privSuper_privCreate_tmp_table_priv,   Lock_tables_privExecute_privRepl_slave_priv,   Repl_client_privCreate_view_privShow_view_priv,   Create_routine_privAlter_routine_privCreate_user_priv,   ssl_typessl_cipherx509_issuerx509_subject,   max_questionsmax_updatesmax_connections,   max_user_connections)价值观('%',' root',   密码(' NEW_PASSWORD_HERE'),' Y',' Y',' Y',' Y',&# 39; Y',' Y',' Y',' Y',   ' Y',' Y',' Y',' Y',' Y',' Y& #39;,' Y',' Y',' Y',' Y',' Y',& #39; Y',' Y',' Y',   ' Y',' Y',' Y',' Y','','& #39;,'','',' 0',' 0',' 0',& #39; 0&#39);

运行查询后,停止mysql并从my.cnf中删除跳过授权,然后重新启动mysql

答案 1 :(得分:0)

您是否尝试通过ssh登录?在控制台类型mysql -uroot中 之后 : 使用mysql; SELECT * FROM user;看看列是什么 并执行INSERT INTO user ....