首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Crowd 修改 IP 後無法登錄 — MySQL 資料修正實戰

     編輯:MySQL 綜合教學

問題現象

Atlassian Crowd 伺服器遷移 IP 後,應用登錄報錯:

org.codehaus.xfire.fault.XFireFault: Client with address "192.168.1.222" ... is forbidden from making requests to the application, crowd.

原因:Crowd 在資料表 cwd_application_address 中維護允許存取的 IP 白名單,IP 變更後未同步更新。

解決步驟

1. 確認當前白名單

mysql> SELECT * FROM cwd_application_address;
+----------------+-----------------------+-----------------------+---------------------+
| application_id | remote_address        | remote_address_binary | remote_address_mask |
+----------------+-----------------------+-----------------------+---------------------+
| 2              | 127.0.0.1             | fwAAAQ==              | 0                   |
| 2              | 192.168.1.111         | wKgBmw==              | 0                   |  <-- 舊 IP
| 2              | localhost             | NULL                  | 0                   |
| ...            | ...                   | ...                   | ...                 |
+----------------+-----------------------+-----------------------+---------------------+

2. 計算新 IP 的 Base64 編碼二進制值

Crowd 將 IPv4 存為 4 位元組二進制再 Base64。一鍵生成:

IP=192.168.1.222
printf "\\x$(printf "%X %X %X %X" $(echo $IP | tr . ' ') | sed 's/ /\\\\x/g')" | base64
# 輸出:wKgByQ==

原理:192.168.1.222 → C0 A8 01 DE (Hex) → 二進制 → Base64。

3. 更新資料庫

UPDATE cwd_application_address
SET remote_address = '192.168.1.222',
    remote_address_binary = 'wKgByQ=='
WHERE application_id = 2
  AND remote_address_binary = 'wKgBmw==';  -- 精確匹配舊 IP 二進制值

4. 重啟 Crowd 服務

# 視部署方式而定
systemctl restart crowd
# 或
./stop_crowd.sh && ./start_crowd.sh

驗證

重新嘗試應用登錄,錯誤消失,功能恢復正常。

補充說明

  • remote_address_mask 通常為 0(精確匹配),若需 CIDR 範圍則設為對應掩碼位數。
  • 同表可能包含多個 application_id(如 Crowd 自身、Jira、Confluence 等),請按實際 application_id 更新。
  • 若啟用了 Crowd 緩存,重啟前可清理 {CROWD_HOME}/caches/ 目錄。

總結

Crowd IP 白名單儲存於 MySQL,IP 變更需同步更新 remote_address 及其 Base64 二進制欄位。掌握 printf ... | base64 快速生成編碼,配合精確 SQL 更新,可在分鐘級完成故障恢復。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved