全新安裝的 MySQL 預設極不安全:root 無密碼、匿名用戶擁有 test 庫權限、本地雙重主機名皆可連接。本文提供標準化加固流程,適用 Unix/Linux/Windows,含 mysqladmin、SQL 直改、驗證步驟。
test、test_% 庫,無管理權限localhost 與真實主機名雙重連接mysqladmin -u root password 'StrongP@ssw0rd'
mysql -u root mysql
UPDATE user SET Password = PASSWORD('StrongP@ssw0rd') WHERE User = 'root';
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('StrongP@ssw0rd');
# 若仍可無密碼登入,說明權限表未重載 mysqladmin -u root status # 強制重載 mysqladmin -u root reload
DELETE FROM mysql.user WHERE User = ''; FLUSH PRIVILEGES;
DELETE FROM mysql.user WHERE User = 'root' AND Host != 'localhost'; FLUSH PRIVILEGES;
DROP DATABASE test; DELETE FROM mysql.db WHERE Db = 'test' OR Db LIKE 'test\\_%'; FLUSH PRIVILEGES;
CREATE USER 'app_user'@'%' IDENTIFIED BY 'StrongP@ssw0rd'; GRANT SELECT, INSERT, UPDATE, DELETE ON app_db.* TO 'app_user'@'%'; FLUSH PRIVILEGES;
net start mysql / net stop mysqlmy.ini 通常在安裝目錄或 C:\WindowsMySQL 5.5+ 內建 mysql_secure_installation 交互式腳本,可一鍵完成上述所有操作,強烈建議使用。