首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL root 使用者遺失?手動重建 root 帳號完整流程

     編輯:MySQL 綜合教學

MySQL root 使用者遺失?手動重建 root 帳號完整流程

問題現象

Linux 安裝 MySQL 後,跳過授權表啟動(mysqld_safe --skip-grant-tables)發現 mysql.user 表為空,無 root 使用者,導致正常啟動後無法登入。

原因分析

初始化腳本未正確建立授權表,或權限資料損毀,導致 user 表無預設 root 帳號。

解決方案:手動 INSERT 重建 root

-- 1. 跳過授權表啟動
mysqld_safe --skip-grant-tables &
mysql -uroot mysql

-- 2. 確認 user 表為空
SELECT * FROM user;  -- Empty set

-- 3. 手動插入 root 使用者(MySQL 5.7+ 欄位數較多,需對應版本結構)
-- 以下為典型 5.6/5.7 相容寫法,實際請依 DESC user 調整欄位順序與數量
INSERT INTO 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, Event_priv, Trigger_priv,
  Create_tablespace_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject,
  max_questions, max_updates, max_connections, max_user_connections,
  plugin, authentication_string, password_expired
) VALUES (
  '%', 'root', PASSWORD('MY_PASSWORD'),
  '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','Y','Y',
  '', '', '', '',
  0,0,0,0,
  'mysql_native_password', '', 'N'
);

-- 4. 刷新權限並重啟
FLUSH PRIVILEGES;
-- 結束 skip-grant-tables 進程,正常啟動 MySQL 服務

關鍵提醒

  • Password 欄位必須用 PASSWORD('明文') 加密,MySQL 不儲存明文密碼
  • 權限欄位(_priv)共 28-31 個視版本而定,'Y' 代表授權,'N' 或空值為拒絕
  • 資源限制欄位(max_questions 等)預設 0 表無限制
  • plugin 欄位建議填 mysql_native_password

驗證

正常啟動 MySQL 後,使用 mysql -uroot -pMY_PASSWORD 登入測試。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved