在 Oracle WebLogic Server 上設定 Java 應用程式的無密碼資料庫連線
本文說明如何使用 Azure 入口網站,在 Oracle WebLogic Server 上設定 Java 應用程式的無密碼資料庫連線。
在本指南中,您會完成下列工作:
- 使用 Azure CLI 布建資料庫資源。
- 在資料庫中啟用 Microsoft Entra 系統管理員。
- 布建使用者指派的受控識別,併為它建立資料庫使用者。
- 使用 Azure 入口網站,在 Oracle WebLogic 供應項目中設定無密碼資料庫連線。
- 驗證資料庫連接。
提供支援 PostgreSQL、MySQL 和 Azure SQL 資料庫的無密碼連線。
必要條件
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
使用 Bash 環境使用 Azure Cloud Shell ;請確定 Azure CLI 版本為 2.43.0 或更高版本。
如果您想要, 請安裝 Azure CLI 2.43.0 或更高版本 以執行 Azure CLI 命令。
- 如果您使用本機安裝,請使用 az login 命令以 Azure CLI 登入。 請遵循您終端機上顯示的步驟,完成驗證程序。 如需其他登入選項,請參閱 使用 Azure CLI 登入。
- 出現提示時,請在第一次使用時安裝 Azure CLI 擴充功能。 如需延伸模組詳細資訊,請參閱使用 Azure CLI 延伸模組。
- 執行 az version 以尋找已安裝的版本和相依程式庫。 若要升級至最新版本,請執行 az upgrade。
請確定您用來登入的 Azure 身分識別具有目前訂用帳戶中的擁有者角色或目前訂用帳戶中的參與者和使用者存取系統管理員角色,並完成本文。 如需 Azure 角色的概觀,請參閱 什麼是 Azure 角色型存取控制 (Azure RBAC)? 如需 Oracle WebLogic Marketplace 供應專案所需特定角色的詳細資訊,請參閱 Azure 內建角色。
建立資源群組
使用 az group create 來建立資源群組。 因為資源群組在訂用帳戶內必須是唯一的,所以請挑選唯一的名稱。 擁有唯一名稱的簡單方式是使用您的姓名縮寫、今天日期與一些識別碼的組合。 例如, abc1228rg。 此範例會在位置中eastus
建立名為 abc1228rg
的資源群組:
export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
--name ${RESOURCE_GROUP_NAME} \
--location eastus
建立資料庫伺服器和資料庫
使用 az mysql flexible-server create 命令建立彈性伺服器。 此範例會使用系統管理員使用者azureuser
和系統管理員密碼Secret123456
,建立名為 mysql20221201
的彈性伺服器。 將密碼取代為您的密碼。 如需詳細資訊,請參閱使用 Azure CLI 建立 適用於 MySQL 的 Azure 資料庫 彈性伺服器。
export MYSQL_NAME="mysql20221201"
export MYSQL_ADMIN_USER="azureuser"
export MYSQL_ADMIN_PASSWORD="Secret123456"
az mysql flexible-server create \
--resource-group $RESOURCE_GROUP_NAME \
--name $MYSQL_NAME \
--location eastus \
--admin-user $MYSQL_ADMIN_USER \
--admin-password $MYSQL_ADMIN_PASSWORD \
--public-access 0.0.0.0 \
--tier Burstable \
--sku-name Standard_B1ms
使用 az mysql flexible-server db create 建立資料庫。
export DATABASE_NAME="contoso"
# create mysql database
az mysql flexible-server db create \
--resource-group $RESOURCE_GROUP_NAME \
--server-name $MYSQL_NAME \
--database-name $DATABASE_NAME
當命令完成時,您應該會看到類似下列範例的輸出:
Creating database with utf8 charset and utf8_general_ci collation
{
"charset": "utf8",
"collation": "utf8_general_ci",
"id": "/subscriptions/contoso-hashcode/resourceGroups/abc1228rg/providers/Microsoft.DBforMySQL/flexibleServers/mysql20221201/databases/contoso",
"name": "contoso",
"resourceGroup": "abc1228rg",
"systemData": null,
"type": "Microsoft.DBforMySQL/flexibleServers/databases"
}
設定資料庫的 Microsoft Entra 系統管理員
既然您已建立資料庫,您必須準備好支持無密碼連線。 無密碼連線需要 Azure 資源和 Microsoft Entra 驗證的受控識別組合。 如需 Azure 資源的受控識別概觀,請參閱 什麼是 Azure 資源的受控識別?
如需 MySQL 彈性伺服器如何與受控識別互動的資訊,請參閱 使用 Microsoft Entra ID 向 MySQL 進行驗證。
下列範例會將目前的 Azure CLI 使用者設定為 Microsoft Entra 系統管理員帳戶。 若要啟用 Azure 驗證,必須將身分識別指派給 MySQL 彈性伺服器。
首先,使用 az identity create 建立受控識別,並使用 az mysql flexible-server identity assign 將身分識別指派給 MySQL 伺服器。
export MYSQL_UMI_NAME="id-mysql-aad-20221205"
# create a User Assigned Managed Identity for MySQL to be used for AAD authentication
az identity create \
--resource-group $RESOURCE_GROUP_NAME \
--name $MYSQL_UMI_NAME
## assign the identity to the MySQL server
az mysql flexible-server identity assign \
--resource-group $RESOURCE_GROUP_NAME \
--server-name $MYSQL_NAME \
--identity $MYSQL_UMI_NAME
然後,使用 az mysql flexible-server ad-admin create,將目前的 Azure CLI 用戶設定為 Microsoft Entra 系統管理員帳戶。
export CURRENT_USER=$(az account show --query user.name --output tsv)
export CURRENT_USER_OBJECTID=$(az ad signed-in-user show --query id --output tsv)
az mysql flexible-server ad-admin create \
--resource-group $RESOURCE_GROUP_NAME \
--server-name $MYSQL_NAME \
--object-id $CURRENT_USER_OBJECTID \
--display-name $CURRENT_USER \
--identity $MYSQL_UMI_NAME
建立使用者指派的受控識別
接下來,在 Azure CLI 中,使用 az identity create 命令在您的訂用帳戶中建立 身分識別。 您可以使用此受控識別來連線到您的資料庫。
az identity create \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity
若要在下列步驟中設定身分識別,請使用 az identity show 命令,將身分識別的用戶端標識元儲存在殼層變數中。
# Get client ID of the user-assigned identity
export CLIENT_ID=$(az identity show \
--resource-group ${RESOURCE_GROUP_NAME} \
--name myManagedIdentity \
--query clientId \
--output tsv)
為您的受控識別建立資料庫使用者
現在,以 Microsoft Entra 系統管理員使用者身分連線到 MySQL 資料庫,併為受控識別建立 MySQL 使用者。
首先,您必須建立防火牆規則,才能從 CLI 用戶端存取 MySQL 伺服器。 執行下列命令以取得您目前的IP位址。
export MY_IP=$(curl http://whatismyip.akamai.com)
如果您正在使用已啟用 VPN 的 Windows 子系統 Linux 版 (WSL),下列命令可能會傳回不正確的 IPv4 位址。 取得 IPv4 位址的其中一種方式是流覽 whatismyipaddress.com。 在任何情況下,請將環境變數 MY_IP
設定為您要從中聯機到資料庫的IPv4位址。
使用 az mysql flexible-server firewall-rule create 建立暫存防火牆規則。
az mysql flexible-server firewall-rule create \
--resource-group $RESOURCE_GROUP_NAME \
--name $MYSQL_NAME \
--rule-name AllowCurrentMachineToConnect \
--start-ip-address ${MY_IP} \
--end-ip-address ${MY_IP}
然後,準備 .sql 檔案,為受控識別建立資料庫使用者。 下列範例會新增具有登入名稱 identity-contoso
的使用者,並授與使用者存取資料庫 contoso
的許可權。
export IDENTITY_LOGIN_NAME="identity-contoso"
cat <<EOF >createuser.sql
SET aad_auth_validate_oids_in_tenant = OFF;
DROP USER IF EXISTS '${IDENTITY_LOGIN_NAME}'@'%';
CREATE AADUSER '${IDENTITY_LOGIN_NAME}' IDENTIFIED BY '${CLIENT_ID}';
GRANT ALL PRIVILEGES ON ${DATABASE_NAME}.* TO '${IDENTITY_LOGIN_NAME}'@'%';
FLUSH privileges;
EOF
使用 az mysql flexible-server execute 命令執行.sql檔案。 您可以使用 az account get-access-token 命令取得存取令牌。
export RDBMS_ACCESS_TOKEN=$(az account get-access-token \
--resource-type oss-rdbms \
--query accessToken \
--output tsv)
az mysql flexible-server execute \
--name ${MYSQL_NAME} \
--admin-user ${CURRENT_USER} \
--admin-password ${RDBMS_ACCESS_TOKEN} \
--file-path "createuser.sql"
系統可能會提示您安裝 rdbms-connect
擴充功能,如下列輸出所示。 按 y
以繼續。 如果您未與使用者合作 root
,則需要輸入用戶密碼。
The command requires the extension rdbms-connect. Do you want to install it now? The command will continue to run after the extension is installed. (Y/n): y
Run 'az config set extension.use_dynamic_install=yes_without_prompt' to allow installing extensions without prompt.
This extension depends on gcc, libpq-dev, python3-dev and they will be installed first.
[sudo] password for user:
如果.sql檔案執行成功,您就會找到類似下列範例的輸出:
Running *.sql* file 'createuser.sql'...
Successfully executed the file.
Closed the connection to mysql20221201
使用使用者名稱 進行驗證時,受控識別 myManagedIdentity
現在具有資料庫的存取權 identity-contoso
。
如果您不想再從這個IP位址存取伺服器,您可以使用下列命令來移除防火牆規則。
az mysql flexible-server firewall-rule delete \
--resource-group $RESOURCE_GROUP_NAME \
--name $MYSQL_NAME \
--rule-name AllowCurrentMachineToConnect \
--yes
最後,使用下列命令來取得您在下一節中使用的 連接字串。
export CONNECTION_STRING="jdbc:mysql://${MYSQL_NAME}.mysql.database.azure.com:3306/${DATABASE_NAME}?useSSL=true"
echo ${CONNECTION_STRING}
在 Azure VM 上設定 Oracle WebLogic Server 的無密碼資料庫連線
本節說明如何使用 Oracle WebLogic Server 的 Azure Marketplace 供應項目來設定無密碼數據源連線。
首先,開始部署供應項目的程式。 下列提供支援無密碼資料庫連線:
- Azure Kubernetes Service 上的 Oracle WebLogic Server
- VM 上的 Oracle WebLogic Server 叢集
- 在 VM 上使用 管理員 Server 的 Oracle WebLogic Server
- VM 上的 Oracle WebLogic Server 動態叢集
如果您想要啟用功能,請在 [基本] 窗格和其他窗格中填入必要資訊。 當您到達 [ 資料庫] 窗格時,請填入無密碼設定,如下列步驟所示。
- 針對資料庫 連線?,選取 [是]。
- 在 [連線 ion 設定] 底下,針對 [選擇資料庫類型],開啟下拉菜單,然後選取 [MySQL] (支援無密碼連線)。
- 針對 JNDI 名稱,輸入 testpasswordless 或您的預期值。
- 針對 DataSource 連線 ion String,輸入您在上一節中取得的 連接字串。
- 針對 [ 資料庫使用者名稱],輸入受控識別的資料庫用戶名稱(值
${IDENTITY_LOGIN_NAME}
)。 在這裡範例中,值為identity-contoso
。 - 選取 [ 使用無密碼數據源連線]。
- 針對 [ 使用者指派的受控識別],選取您先前建立的受控識別。 在這裡範例中,其名稱為
myManagedIdentity
。
[連線 ion 設定] 區段看起來應該類似下列螢幕快照,其使用 VM 上的 Oracle WebLogic Server 叢集作為範例。
您現在已完成設定無密碼連線。 您可以繼續填寫下列窗格,或選取 [檢閱 + 建立],然後選取 [建立] 來部署供應專案。
確認資料庫連線
如果供應專案部署完成且沒有錯誤,資料庫連線就會成功設定。
繼續以 VM 上的 Oracle WebLogic Server 叢集為例,部署完成之後,請遵循 Azure 入口網站 中的下列步驟來尋找 管理員 控制台 URL。
- 尋找您部署 WLS 的資源群組。
- 在 [設定] 下方,選取 [部署]。
- 選取持續時間最長的部署。 此部署應該位於清單底部。
- 選取 [輸出]。
- WebLogic 管理員 istration Console 的 URL 是 adminConsoleUrl 輸出的值。
- 複製輸出變數
adminConsoleUrl
的值。 - 將值貼到瀏覽器網址列中,然後按 Enter 以開啟 WebLogic 管理員 istration 控制台的登入頁面。
使用下列步驟來驗證資料庫連線。
使用您在 [基本] 窗格上提供的使用者名稱和密碼,登入 WebLogic 管理員 istration 控制台。
在 [定義域結構] 底下,選取 [服務]、[數據源],然後選取 [testpasswordless]。
選取 [ 監視] 索引標籤,其中數據源的狀態為 [正在執行],如下列螢幕快照所示。
選取 [ 測試] 索引標籤,然後選取所需伺服器旁邊的單選按鈕。
選取 [ 測試數據源]。 您應該會看到訊息,指出測試成功,如下列螢幕快照所示。
清除資源
如果您不需要這些資源,您可以執行下列命令來刪除這些資源:
az group delete --name ${RESOURCE_GROUP_NAME}
az group delete --name <resource-group-name-that-deploys-the-offer>
下一步
遵循下列連結,以深入了解如何在 AKS 或虛擬機器上執行 WLS:
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應