發表文章

目前顯示的是 3月, 2025的文章

[database]mysql 如何防駭

 MySQL 資料庫的安全性非常重要,特別是你的應用需要全球打卡,涉及大量用戶數據。為了防止駭客攻擊,你可以從以下幾個層面加強防護: 1. 使用強密碼與最小權限原則 ✅ 強密碼策略 確保 MySQL 帳戶使用強密碼,避免簡單密碼被破解: ALTER USER 'youruser' @ '%' IDENTIFIED WITH mysql_native_password BY 'StrongP@ssw0rd!' ; 可透過 validate_password 外掛來強制執行: INSTALL PLUGIN validate_password SONAME 'validate_password.so' ; SET GLOBAL validate_password_policy = STRONG; ✅ 最小權限原則 不要讓應用程式帳戶擁有 ALL PRIVILEGES ,只給必要的權限: GRANT SELECT , INSERT , UPDATE ON mydb. * TO 'appuser' @ '%' ; 2. 限制 MySQL 連線與遠端存取 ✅ 避免 MySQL 允許遠端連線 除非必要,不允許外部 IP 直接連線 MySQL,編輯 my.cnf : bind-address = 127.0 . 0.1 如果必須開放,則 限制特定 IP : CREATE USER 'appuser' @ 'your.server.ip' IDENTIFIED BY 'password' ; 3. 防 SQL Injection(SQL 注入攻擊) ✅ 使用 Prepared Statements 永遠不要在 SQL 查詢中拼接使用者輸入,應該使用 Prepared Statement : import 'package:mysql1/mysql1.dart'; void insertCheckIn(MySqlConnection conn, double latitude, double longitude) async { await ...

[MySQL]修改MySQL 時區

在 MySQL 中,時區 ( time_zone ) 影響到 時間函式(如 NOW() )的輸出 ,但 不影響 TIMESTAMP 類型的儲存,因為 TIMESTAMP 會自動轉換為 UTC 存儲 。 ✅ 1. 檢查 MySQL 當前時區 執行以下 SQL 查詢: SELECT @ @global .time_zone, @ @session .time_zone; 回傳可能是: + --------------------+---------------------+ | @ @global .time_zone | @ @session .time_zone | + --------------------+---------------------+ | SYSTEM | + 00 : 00 | + --------------------+---------------------+ 這表示: @@global.time_zone 為 SYSTEM (使用系統時區) @@session.time_zone 為 UTC+0 SELECT @@global.time_zone, @@session.time_zone;  ✅ 2. 修改 MySQL 時區 方法 1:臨時修改(不影響重啟後設定) 🔹 修改當前連線(Session)時區 SET time_zone = '+08:00' ; -- 設定為台北(UTC+8) 驗證變更: SELECT NOW(); 🔹 修改全域(Global)時區 SET GLOBAL time_zone = '+08:00' ; 這樣所有新的連線都會使用 UTC+8 ,但 MySQL 重啟後會恢復預設值 。 方法 2:永久修改(影響 MySQL 服務) 如果想要 永久修改 MySQL 時區,需要編輯 MySQL 配置檔案 。 🔹 1. 編輯 my.cnf 或 my.ini Linux/macOS (通常在 /etc/mysql/my.cnf 或 /etc/my.cnf ): sudo nano /etc/mysql/my.cnf Windows (通常在 C:\ProgramData\MySQL\M...