[僅限PaaS]{class="badge informative" title="僅適用於雲端專案(Adobe管理的PaaS基礎結構)和內部部署專案的Adobe Commerce 。"}
設定MySQL服務
mysql服務提供以MariaDB版本10.2到10.4為基礎的持續性資料儲存,支援XtraDB儲存引擎,並重新實作MySQL 5.6和5.7的功能。
與其他MariaDB或MySQL版本相比,在MariaDB 10.4上重新索引需要更多時間。 請參閱 效能最佳實務 指南中的索引子。
使用下列指示在Pro整合環境與入門環境(包括master分支)上進行服務設定。
若要啟用MySQL:
- 
                  
將必要的名稱、型別和磁碟值(以MB為單位)新增至
.magento/services.yaml檔案。code language-yaml mysql: type: mysql:<version> disk: 5120note tip TIP 磁碟空間不足可能導致MySQL錯誤,例如 PDO Exception: MySQL server has gone away。 請確認您已在.magento/services.yaml檔案中為服務配置足夠的磁碟空間。 - 
                  
設定
.magento.app.yaml檔案中的關聯性。code language-yaml relationships: database: "mysql:mysql" - 
                  
新增、提交和推送您的程式碼變更。
code language-bash git add .magento/services.yaml .magento.app.yaml && git commit -m "Enable mysql service" && git push origin <branch-name> 
設定MySQL資料庫
設定MySQL資料庫時,有以下選項:
schemas— 結構描述會定義資料庫。 預設結構描述是main資料庫。endpoints— 每個端點代表具有特定許可權的認證。 預設端點是mysql,具有main資料庫的admin存取權。properties— 屬性用於定義其他資料庫組態。
以下是.magento/services.yaml檔案中的基本範例設定:
mysql:
    type: mysql:10.4
    disk: 5120
    configuration:
        properties:
            optimizer_switch: "rowid_filter=off"
            optimizer_use_condition_selectivity: 1
            上述範例中的properties將預設optimizer設定修改為「效能最佳實務指南🔗」中的建議。
MariaDB組態選項:
default_charsetdefault_collationmax_allowed_packet1到100。optimizer_switch設定多個資料庫使用者
您可以選擇設定多個具有不同許可權的使用者來存取main資料庫。
依預設,有一個名為mysql的端點擁有資料庫的管理員存取權。 若要設定多個資料庫使用者,您必須在services.yaml檔案中定義多個端點,並在.magento.app.yaml檔案中宣告關係。 對於Pro測試和生產環境,提交Adobe Commerce支援票證以請求其他使用者。
使用巢狀陣列來定義特定使用者存取的端點。 每個端點可以指定一個或多個結構描述(資料庫)的存取權,以及每個結構描述的不同許可權層級。
有效的許可權層級為:
ro:僅允許SELECT查詢。rw:允許SELECT查詢和INSERT、UPDATE和DELETE查詢。admin:允許所有查詢,包括DDL查詢(CREATE TABLE、DROP TABLE等)。
例如:
mysql:
    type: mysql:10.4
    disk: 5120
    configuration:
        schemas:
            - main
        endpoints:
            admin:
                default_schema: main
                privileges:
                    main: admin
            reporter:
                privileges:
                    main: ro
            importer:
                privileges:
                    main: rw
        properties:
            optimizer_switch: "rowid_filter=off"
            optimizer_use_condition_selectivity: 1
            在上述範例中,admin端點提供對main資料庫的管理員層級存取權,reporter端點提供唯讀存取權,importer端點提供讀寫存取權,這表示:
admin使用者擁有資料庫的完整控制權。reporter使用者只有SELECT許可權。importer使用者具有SELECT、INSERT、UPDATE和DELETE許可權。
將上述範例中定義的端點新增至.magento.app.yaml檔案的relationships屬性。 例如:
relationships:
    database: "mysql:admin"
    databasereporter: "mysql:reporter"
    databaseimporter: "mysql:importer"
            DEFINER存取控制機制。連線到資料庫
直接存取MariaDB資料庫需要您使用SSH登入遠端雲端環境,並連線至資料庫。
- 
                  
使用SSH登入遠端環境。
code language-bash magento-cloud ssh - 
                  
從$MAGENTO_CLOUD_RELATIONSHIPS變數中的
database和type屬性擷取MySQL登入認證。code language-bash echo $MAGENTO_CLOUD_RELATIONSHIPS | base64 -d | json_pp或
code language-bash php -r 'print_r(json_decode(base64_decode($_ENV["MAGENTO_CLOUD_RELATIONSHIPS"])));'在回應中,尋找MySQL資訊。 例如:
code language-json "database" : [ { "password" : "", "rel" : "mysql", "hostname" : "nnnnnnnn.mysql.service._.magentosite.cloud", "service" : "mysql", "host" : "database.internal", "ip" : "###.###.###.###", "port" : 3306, "path" : "main", "cluster" : "projectid-integration-id", "query" : { "is_master" : true }, "type" : "mysql:10.3", "username" : "user", "scheme" : "mysql" } ], - 
                  
連線到資料庫。
- 
                      
首先,使用以下命令:
code language-bash mysql -h database.internal -u <username> - 
                      
對於Pro,請使用下列命令,其中包含從
$MAGENTO_CLOUD_RELATIONSHIPS變數擷取的主機名稱、連線埠號碼、使用者名稱和密碼。code language-bash mysql -h <hostname> -P <number> -u <username> -p'<password>' 
 - 
                      
 
magento-cloud db:sql命令連線到遠端資料庫並執行SQL命令。連線到次要資料庫
有時候,您必須連線到次要資料庫,以改善資料庫效能或解決資料庫鎖定問題。 如果需要此組態,請使用"port" : 3304建立連線。 請參閱 實作最佳實務 指南中的設定MySQL從屬連線的最佳實務主題。
疑難排解
請參閱下列Adobe Commerce支援文章,以取得MySQL問題疑難排解的說明: