我意外地删除了用户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
mysql
。user
(Host
,User
,Password
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
,Create_priv
,Drop_priv
,Reload_priv
,Shutdown_priv
,Process_priv
,File_priv
,Grant_priv
,References_priv
,Index_priv
,Alter_priv
,Show_db_priv
,Super_priv
,Create_tmp_table_priv
,Lock_tables_priv
,Execute_priv
,Repl_slave_priv
,Repl_client_priv
,Create_view_priv
,Show_view_priv
,Create_routine_priv
,Alter_routine_priv
,Create_user_priv
,ssl_type
,ssl_cipher
,x509_issuer
,x509_subject
,max_questions
,max_updates
,max_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');
要恢复事件和触发器的权限,我必须访问具有“所有”权限的其他用户,幸运的是我有一个权限,但如果没有权限,可能是不可能的。
答案 0 :(得分:3)
这应该恢复它而不是重置。
停止mysql服务器。
编辑my.cnf以包含跳过补助金
[mysqld]
skip_grant_tables
启动mysql。然后只需使用提示符中的mysql
命令登录mysql。并插入此查询,确保更新密码new password here
。
INSERT INTO
mysql
。user
(Host
,User
,Password
,Select_priv
,Insert_priv
,Update_priv
,Delete_priv
,Create_priv
,Drop_priv
,Reload_priv
,Shutdown_priv
,Process_priv
,File_priv
,Grant_priv
,References_priv
,Index_priv
,Alter_priv
,Show_db_priv
,Super_priv
,Create_tmp_table_priv
,Lock_tables_priv
,Execute_priv
,Repl_slave_priv
,Repl_client_priv
,Create_view_priv
,Show_view_priv
,Create_routine_priv
,Alter_routine_priv
,Create_user_priv
,ssl_type
,ssl_cipher
,x509_issuer
,x509_subject
,max_questions
,max_updates
,max_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
....