共用方式為


在 Oracle WebLogic Server 上設定 Java 應用程式的無密碼資料庫連線

本文說明如何使用 Azure 入口網站,在 Oracle WebLogic Server 上設定 Java 應用程式的無密碼資料庫連線。

在本指南中,您會完成下列工作:

  • 使用 Azure CLI 布建資料庫資源。
  • 在資料庫中啟用Microsoft Entra 系統管理員。
  • 布建使用者指派的受控識別,併為它建立資料庫使用者。
  • 使用 Azure 入口網站 在 Oracle WebLogic 供應項目中設定無密碼資料庫連線。
  • 驗證資料庫連接。

供應項目支援 PostgreSQL、MySQL 和 Azure SQL 資料庫的無密碼連線。

必要條件

建立資源群組

使用 az group create 建立資源群組。 因為資源群組在訂用帳戶內必須是唯一的,所以請挑選唯一的名稱。 擁有唯一名稱的簡單方式是使用您的姓名縮寫、今天日期與某個識別碼的組合 - 例如,abc1228rg。 此範例會在位置中abc1228rg建立名為 eastus 的資源群組:

export RESOURCE_GROUP_NAME="abc1228rg"
az group create \
    --name ${RESOURCE_GROUP_NAME} \
    --location eastus

建立資料庫伺服器和資料庫

使用 az mysql flexible-server create 命令建立彈性伺服器。 此範例會使用系統管理員使用者mysql20221201和系統管理員密碼azureuser,建立名為 Secret123456 的彈性伺服器。 將密碼取代為您的密碼。 如需詳細資訊,請參閱使用 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 彈性伺服器如何與受管理的身份互動,請參閱 Azure Database for 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)

為您的受控識別建立資料庫使用者

首先,您必須建立防火牆規則,才能從 CLI 用戶端存取資料庫伺服器。 執行下列命令以取得您目前的 IP 位址:

export MY_IP=$(curl http://whatismyip.akamai.com)

如果您正在使用已啟用 VPN 的 Windows 子系統 Linux 子系統 (WSL),下列命令可能會傳回不正確的 IPv4 位址。 取得 IPv4 位址的其中一種方式是流覽 whatismyipaddress.com。 將環境變數 MY_IP 設定為您要從中聯機到資料庫的 IPv4 位址。 您稍後會使用此IP位址來設定資料庫防火牆。

以 Microsoft Entra 系統管理員使用者身分連線到 MySQL 資料庫,為您的受控識別建立 MySQL 使用者。

使用 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 供應項目來設定無密碼數據源連線。

首先,開始部署供應項目的程式。 下列提供支援無密碼資料庫連線:

如果您想要啟用功能,請在 [基本] 窗格和其他窗格中輸入必要資訊。 當您到達 [資料庫] 窗格時,請輸入無密碼設定,如下列步驟所示:

  1. 針對 [ 連線到資料庫?],選取 [ ]。
  2. 在 [連線設定] 底下,針對 [選擇資料庫類型],從下拉功能表中選取 [MySQL [支援無密碼連線]
  3. 針對JNDI 名稱,輸入testpasswordless 或您預期的值。
  4. 針對 DataSource 連接字串,輸入您在上一節中取得的連接字串。
  5. 針對 資料庫使用者名稱,請輸入受控識別的資料庫用戶名稱,這是 ${IDENTITY_LOGIN_NAME}的值。 在這個範例中,此值是 identity-contoso
  6. 選取 [ 使用無密碼數據源連線]。
  7. 針對 [ 使用者指派的受控識別],選取您先前建立的受控識別。 在這裡範例中,其名稱 myManagedIdentity

[連線設定] 區段看起來應該類似下列螢幕快照,其使用 VM 上的 Oracle WebLogic Server 叢集作為範例。

Azure 入口網站 的螢幕快照,其中顯示 [在 VM 上建立 Oracle WebLogic Server] 頁面上的 [設定資料庫] 窗格。

您已完成設定無密碼連線。 您可以繼續填寫下列窗格,或選取 [檢閱 + 建立],然後選取 [建立] 來部署供應專案。

確認資料庫連線

如果供應專案部署完成且沒有錯誤,資料庫連線就會成功設定。

繼續以 VM 上的 Oracle WebLogic Server 叢集為例,部署完成之後,請遵循 Azure 入口網站 中的下列步驟來尋找管理控制台 URL。

  1. 尋找您部署 WLS 的資源群組。
  2. 在 [設定] 下方,選取 [部署]。
  3. 選取持續時間最長的部署。 此部署應該位於清單底部。
  4. 選取 [輸出]
  5. WebLogic 管理控制台的 URL 是 adminConsoleUrl 輸出的值
  6. adminConsoleUrl複製輸出變數的值。
  7. 將值貼到瀏覽器網址列中,然後按 Enter 以開啟 WebLogic 管理主控台的登入頁面。

使用下列步驟來驗證資料庫連線:

  1. 使用您在 [基本] 窗格上提供的使用者名稱和密碼登入 WebLogic 管理控制台。

  2. 在 [定義域結構] 底下,選取 [服務]、[數據源],然後選取 [testpasswordless]。

  3. 選取 [監視] 索引標籤,其中數據源的狀態為 運行中,如下列螢幕快照所示:

  4. 選擇 [測試] 索引標籤,然後選擇所需伺服器旁邊的單選按鈕。

  5. 選取 [ 測試數據源]。 您應該會看到訊息,指出測試成功,如下列螢幕快照所示:

    WebLogic 控制台入口網站的螢幕快照,其中顯示數據源的成功測試。

清除資源

如果您不需要這些資源,您可以使用下列命令加以刪除:

az group delete --name ${RESOURCE_GROUP_NAME}
az group delete --name <resource-group-name-that-deploys-the-offer>

下一步

遵循下列連結,以深入了解如何在 AKS 或虛擬機器上執行 WLS: