装完数据库清理一些默认账号的时候不小心把root删除了,flushprivileges之后的新root忘了grant任何权限,查看mysqld选项里面有个−−skip-grant-tables
代码如下:
#/usr/libexec/mysqld--verbos--help
mysql5.5手册说明如下
代码如下:
--skip-grant-tables
Thisoptioncausestheservertostartwithoutusingtheprivilegesystematall,whichgivesanyonewithaccesstotheserverunrestrictedaccesstoalldatabases.Youcancausearunningservertostartusingthegranttablesagainbyexecutingmysqladminflush-privilegesormysqladminreloadcommandfromasystemshell,orbyissuingaMySQLFLUSHPRIVILEGESstatementafterconnectingtotheserver.Thisoptionalsosuppressesloadingofplugins,user-definedfunctions(UDFs),andscheduledevents.Tocausepluginstobeloadedanyway,usethe--plugin-loadoption.
--skip-grant-tablesisunavailableifMySQLwasconfiguredwiththe--disable-grant-optionsoption.SeeSection2.10.2,“TypicalconfigureOptions”.
mysqld_safe是Unix/Linux系统下的MySQL服务器的一个启动脚本。这个脚本增加了一些安全特性,会在启动MySQL服务器以后继续监控其运行情况,并在出现错误的时候重新启动服务器。后台启动mysql
代码如下:
#mysqld_safe--skip-grant-tables&
如果没有root账户就添加一个
代码如下:
INSERTINTOuserSETUser='root',Host='localhost',ssl_cipher='',x509_issuer='',x509_subject='';
直接输入mysql连接并添加权限,这时候是不能使用grant命令的,只能用update
代码如下:
UPDATEuserSETSelect_priv='Y',Insert_priv='Y',Update_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',Alter_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',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y',authentication_string=''WHEREUser='root';
注意我用的是mysql是5.5版本,可能操作过程中sql语句或其他地方有不同,语句执行完毕之后需要flushprivileges,还可能要重新登录才行。
|