共計 4637 個字符,預(yù)計需要花費(fèi) 12 分鐘才能閱讀完成。
這篇文章將為大家詳細(xì)講解有關(guān)如何解決 mysql 中 user 表沒有的問題,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
mysql user 表沒有了的解決辦法:1、在“[mysqld]”中添加“skip-grant-tables
”;2、編輯 my.cnf 配置文件,添加“sql_mode=NO_ENGINE_SUBSTITUTION”;3、重啟 mysql 服務(wù)。
本文操作環(huán)境:Windows7 系統(tǒng),mysql5.5 版,Dell G3 電腦。
mysql 忘記密碼,重置密碼,mysql.user 表為空的解決辦法:
一、用戶表有用戶,直接修改密碼
ERROR 1045 (28000): Access denied for user root @ localhost (using password: YES)
修改 mysql 配置文件 my.cnf:
vim /etc/my.cnf
在 [mysqld] 中添加
skip-grant-tables
重啟 mysql 服務(wù),用空密碼直接登錄,查詢用戶表,有結(jié)果則按如下步驟修改,結(jié)果為空直接最后的解決辦法
mysql select Host,User,authentication_string from mysql.user;
+-----------+---------------+-------------------------------------------+
| Host | User | authentication_string |
+-----------+---------------+-------------------------------------------+
| localhost | root | *6A7A490FB9DC8C33C2B025A91737077A7E9CC5E5 |
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| % | root | *6A7A490FB9DC8C33C2B025A91737077A7E9CC5E5 |
+-----------+---------------+-------------------------------------------+
4 rows in set (0.00 sec)
修改對應(yīng)用戶的密碼
# 重置密碼為 123456
mysql update mysql.user set authentication_string=password(123456) where user= root
Query OK, 2 rows affected, 1 warning (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 1
# 刷新權(quán)限,使配置生效
mysql FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)
# 退出
mysql quit
Bye
取消或注釋掉 my.cnf 配置文件添加的選項 skip-grant-tables
,重啟 mysql 服務(wù),搞定收工。
二、用戶表沒有數(shù)據(jù),則需要插入用戶數(shù)據(jù)
mysql select Host,User,authentication_string from mysql.user;
Empty set (0.00 sec)
# 退出登陸
mysql exit
Bye
編輯 my.cnf 配置文件,添加或修改下面兩項(我這沒有 sql_mode 項):
sql_mode=NO_ENGINE_SUBSTITUTION
skip-grant-tables
停止 mysql 服務(wù),啟動數(shù)據(jù)庫的安全模式:mysqld_safe
使用 root 空密碼連接數(shù)據(jù)庫:mysql -uroot -p
插入 root 用戶數(shù)據(jù)
mysql insert into mysql.user(Host,User,authentication_string) values(% , root ,password( 123456));
Query OK, 1 row affected, 4 warnings (0.00 sec)
再次查詢 mysql.user 表,會報錯
mysql select Host,User,authentication_string from mysql.user;
ERROR 1194 (HY000): Table user is marked as crashed and should be repaired
需要修復(fù) mysql.user 表
mysql REPAIR TABLE mysql.user;
+------------+--------+----------+-------------------------------------------------+
| Table | Op | Msg_type | Msg_text |
+------------+--------+----------+-------------------------------------------------+
| mysql.user | repair | info | Wrong bytesec: 113-108- 95 at 396; Skipped |
| mysql.user | repair | info | Found block that points outside data file at 32 |
| mysql.user | repair | info | Found block that points outside data file at 36 |
| mysql.user | repair | info | Found block that points outside data file at 40 |
| mysql.user | repair | info | Found block that points outside data file at 44 |
| mysql.user | repair | info | Found block that points outside data file at 48 |
| mysql.user | repair | info | Found block that points outside data file at 52 |
| mysql.user | repair | info | Found block that points outside data file at 56 |
| mysql.user | repair | info | Found block that points outside data file at 60 |
| mysql.user | repair | warning | Number of rows changed from 4 to 3 |
| mysql.user | repair | status | OK |
+------------+--------+----------+-------------------------------------------------+
11 rows in set (0.64 sec)
# 再次查詢 user 表
mysql select Host,User,authentication_string from mysql.user;
+-----------+---------------+-------------------------------------------+
| Host | User | authentication_string |
+-----------+---------------+-------------------------------------------+
| localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE |
| % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+-----------+---------------+-------------------------------------------+
3 rows in set (0.00 sec)
修改 root 用戶的權(quán)限:
update mysql.user set
`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
where user= root
# 更新權(quán)限
mysql flush privileges;
Query OK, 0 rows affected (0.00 sec)
# 退出登陸
mysql exit
Bye
退出 mysql,將 my.cnf 配置文件的修改恢復(fù)
結(jié)束 mysqld_safe 進(jìn)程:pkill mysql
啟動 mysql 服務(wù): systemctl start mysql
問題解決!
關(guān)于“如何解決 mysql 中 user 表沒有的問題”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。