Share via


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

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

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

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

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

必要條件

建立資源群組

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

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

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

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

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

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

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

確認資料庫連線

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

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

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

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

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

  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: