mysqli_real_escape_string() 或 PDO::quote(),但以參數化為首選。# my.cnf [mysqld]
skip-networking
# 或 bind-address=127.0.0.1
本地連線改用 Unix Socket (mysql.sock),效能更高且無網路暴露。
# my.cnf [mysqld]
local-infile=0
防止攻擊者讀取伺服器任意檔案 (如 /etc/passwd)。
# 重新命名 root
UPDATE mysql.user SET User='custom_admin' WHERE User='root';
# 設定強密碼
SET PASSWORD FOR 'custom_admin'@'localhost' = PASSWORD('StrongP@ssw0rd!');
# 刪除匿名帳號、測試庫
DELETE FROM mysql.user WHERE User='';
DROP DATABASE test;
FLUSH PRIVILEGES;
UPDATE mysql.user SET Host='localhost' WHERE User='custom_admin';
FLUSH PRIVILEGES;
cat /dev/null > ~/.bash_history
cat /dev/null > ~/.mysql_history
ln -sf /dev/null ~/.bash_history
ln -sf /dev/null ~/.mysql_history
避免明文密碼殘留在 .bash_history、.mysql_history。
chown -R mysql:mysql /var/lib/mysql
chmod -R go-rwx /var/lib/mysql
防止本地用戶直接複製資料檔繞過 MySQL 權限。
audit_log 外掛。MariaDB Audit Plugin 或 McAfee MySQL Audit。