RHEL/CentOS 安裝 MySQL 5.6 RPM 時,mysql_install_db 靜默失敗導致 mysql.user 表為空,root 無法登入。解法:安全模式啟動 → 手動插入 root 用戶 → 正常啟動 → 修改密碼。
yum remove mysql* mariadb* 或 rpm -e。rpm -ivh mysql-community-server-5.6.x.rpm mysql-community-client-5.6.x.rpm。mysql_install_db 初始化系統表、生成隨機 root 密碼寫入 /root/.mysql_secret。service mysqld start → mysql -u root -p'密碼' 登入 → 修改密碼。service mysqld start 正常,但 mysql -u root -p'xxx' 報 Access denied。/root/.mysql_secret 存在,但密碼無效。SELECT * FROM mysql.user; 回傳空表 → 初始化失敗。MySQL 5.6 RPM 的 mysql_install_db 在某些環境(SELinux、權限、目錄殘留)下靜默失敗,不報錯、不寫日誌,導致 mysql.user 空表。
service mysqld stop
mysqld_safe --user=mysql --skip-grant-tables --skip-networking &
mysql -u root
USE mysql;
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
('localhost', 'root', PASSWORD('root'),
'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','Y','Y',
'', '', '', '', 0, 0, 0, 0, '', '', 'N');
關鍵欄位:Host、User、Password、最後 password_expired='N'(否則首次登入強制改密)。
exit
pkill mysqld_safe
service mysqld start
mysql -u root -proot
SET PASSWORD = PASSWORD('NewStrongPass123!');
FLUSH PRIVILEGES;
rm -rf /var/lib/mysql 徹底清理舊數據目錄。setenforce 0 臨時放行。mysql-community-release)安裝,自動解決依賴與初始化。mysqld --initialize-insecure,此問題較少見。MySQL 5.6 RPM 初始化靜默失敗 → mysql.user 空表 → root 無法登入。安全模式 + 手動 INSERT root + 正常啟動 + 改密 三步驟徹底修復,避免重裝循環。