root 密碼:ALTER USER 'root'@'localhost' IDENTIFIED BY 'StrongP@ss!';''@'%':DROP USER ''@'%';GRANT SELECT,INSERT ON appdb.* TO 'app'@'10.0.%.%';SELECT User, Host,
Shutdown_priv, Reload_priv, Process_priv, File_priv,
Super_priv, Create_user_priv
FROM mysql.user
WHERE Shutdown_priv='Y' OR Reload_priv='Y' OR Process_priv='Y' OR File_priv='Y';
僅保留必要帳號擁有上述權限。
PDO::ATTR_EMULATE_PREPARES = false 使用真實預處理語句防注入。--without-mysqli)。type(避免 ALL)、key、rows、Extra(Using temporary/filesort)。INCLUDE 不支援,改用複合索引包含 SELECT 欄位。SELECT *、LIKE '%keyword%' 導致全表掃描。WHERE id > last_seen_id LIMIT 20(游標分頁)替代 OFFSET。| 參數 | 建議值/方向 | 說明 |
|---|---|---|
| innodb_buffer_pool_size | 實體記憶體 60-80% | 核心快取,資料+索引 |
| innodb_log_file_size | 1GB-4GB | 減少 checkpoint 壓力 |
| innodb_flush_log_at_trx_commit | 1(安全)或 2(效能) | 2 可能丟失 1 秒交易 |
| max_connections | 應用峰值 + 緩衝 | 配合 thread_pool/ProxySQL |
| query_cache_type | OFF (MySQL 8.0 已移除) | 高併發下鎖爭用嚴重 |
mysqldump --single-transaction --routines --triggers --events(小/中型)。Percona XtraBackup(熱備份、大型、支援增量)。binlog_format=ROW、expire_logs_days=7,支援 PITR。mysqld_exporter 收集指標。Threads_connected、Innodb_row_lock_waits、Slow_queries、Replication_lag(主從)。long_query_time=1、log_queries_not_using_indexes=ON。持續應用上述技巧,構建安全、高效、可維運的 MySQL 環境。