如何解决mysql中user表没有的问题
这篇文章将为大家详细讲解有关如何解决mysql中user表没有的问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
mysql user表没有了的解决办法:1、在“[mysqld]”中添加“skip-grant-tables”;2、编辑my.cnf配置文件,添加“sql_mode=NO_ENGINE_SUBSTITUTION”;3、重启mysql服务。
本文操作环境:Windows7系统,mysql5.5版,Dell G3电脑。
mysql 忘记密码,重置密码,mysql.user表为空的解决办法:
一、用户表有用户,直接修改密码ERROR1045(28000):Accessdeniedforuser'root'@'localhost'(usingpassword:YES)
修改mysql配置文件my.cnf:
vim/etc/my.cnf
在[mysqld]中添加
skip-grant-tables
重启mysql服务,用空密码直接登录,查询用户表,有结果则按如下步骤修改,结果为空直接最后的解决办法
mysql>selectHost,User,authentication_stringfrommysql.user;+-----------+---------------+-------------------------------------------+|Host|User|authentication_string|+-----------+---------------+-------------------------------------------+|localhost|root|*6A7A490FB9DC8C33C2B025A91737077A7E9CC5E5||localhost|mysql.session|*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE||localhost|mysql.sys|*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE||%|root|*6A7A490FB9DC8C33C2B025A91737077A7E9CC5E5|+-----------+---------------+-------------------------------------------+4rowsinset(0.00sec)
修改对应用户的密码
#重置密码为123456mysql>updatemysql.usersetauthentication_string=password('123456')whereuser='root'QueryOK,2rowsaffected,1warning(0.00sec)Rowsmatched:2Changed:2Warnings:1#刷新权限,使配置生效mysql>FLUSHPRIVILEGES;QueryOK,0rowsaffected(0.00sec)#退出mysql>quitBye
取消或注释掉my.cnf配置文件添加的选项 skip-grant-tables ,重启mysql服务,搞定收工。
二、用户表没有数据,则需要插入用户数据mysql>selectHost,User,authentication_stringfrommysql.user;Emptyset(0.00sec)#退出登陆mysql>exitBye
编辑my.cnf配置文件,添加或修改下面两项(我这没有sql_mode项):
sql_mode=NO_ENGINE_SUBSTITUTIONskip-grant-tables
停止mysql服务,启动数据库的安全模式:mysqld_safe &
使用root 空密码连接数据库: mysql -uroot -p
插入root用户数据
mysql>insertintomysql.user(Host,User,authentication_string)values("%","root",password("123456"));QueryOK,1rowaffected,4warnings(0.00sec)
再次查询mysql.user表,会报错
mysql>selectHost,User,authentication_stringfrommysql.user;ERROR1194(HY000):Table'user'ismarkedascrashedandshouldberepaired
需要修复mysql.user表
mysql>REPAIRTABLEmysql.user;+------------+--------+----------+-------------------------------------------------+|Table|Op|Msg_type|Msg_text|+------------+--------+----------+-------------------------------------------------+|mysql.user|repair|info|Wrongbytesec:113-108-95at396;Skipped||mysql.user|repair|info|Foundblockthatpointsoutsidedatafileat32||mysql.user|repair|info|Foundblockthatpointsoutsidedatafileat36||mysql.user|repair|info|Foundblockthatpointsoutsidedatafileat40||mysql.user|repair|info|Foundblockthatpointsoutsidedatafileat44||mysql.user|repair|info|Foundblockthatpointsoutsidedatafileat48||mysql.user|repair|info|Foundblockthatpointsoutsidedatafileat52||mysql.user|repair|info|Foundblockthatpointsoutsidedatafileat56||mysql.user|repair|info|Foundblockthatpointsoutsidedatafileat60||mysql.user|repair|warning|Numberofrowschangedfrom4to3||mysql.user|repair|status|OK|+------------+--------+----------+-------------------------------------------------+11rowsinset(0.64sec)#再次查询user表mysql>selectHost,User,authentication_stringfrommysql.user;+-----------+---------------+-------------------------------------------+|Host|User|authentication_string|+-----------+---------------+-------------------------------------------+|localhost|mysql.session|*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE||localhost|mysql.sys|*THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE||%|root|*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9|+-----------+---------------+-------------------------------------------+3rowsinset(0.00sec)
修改root用户的权限:
updatemysql.userset`Select_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'whereuser='root';#更新权限mysql>flushprivileges;QueryOK,0rowsaffected(0.00sec)#退出登陆mysql>exitBye
退出mysql,将my.cnf配置文件的修改恢复
结束mysqld_safe 进程:pkill mysql
启动mysql服务: systemctl start mysql
问题解决!
关于“如何解决mysql中user表没有的问题”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。