文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美國信紙尺寸) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  設定複寫以使用加密連線

19.3.1 設定複寫以使用加密連線

若要使用加密連線傳輸複寫期間所需的二進位日誌,來源和複寫副本伺服器都必須支援加密網路連線。如果任一伺服器不支援加密連線 (因為它未針對加密連線編譯或設定),則無法透過加密連線進行複寫。

為複寫設定加密連線與為用戶端/伺服器連線設定加密連線類似。您必須取得 (或建立) 適用於來源伺服器的安全憑證,以及每個複寫副本上類似的憑證 (來自相同的憑證授權單位)。您也必須取得適用的金鑰檔案。

如需設定伺服器和用戶端以進行加密連線的詳細資訊,請參閱第 8.3.1 節,「設定 MySQL 以使用加密連線」

若要在來源伺服器上啟用加密連線,您必須建立或取得適用的憑證和金鑰檔案,然後將下列組態參數新增至來源伺服器 my.cnf 檔案的 [mysqld] 區段,並視需要變更檔案名稱

[mysqld]
ssl_ca=cacert.pem
ssl_cert=server-cert.pem
ssl_key=server-key.pem

檔案的路徑可以是相對或絕對路徑;我們建議您始終使用完整路徑來達到此目的。

組態參數如下

  • ssl_ca:憑證授權單位 (CA) 憑證檔案的路徑名稱。(ssl_capath 類似,但指定 CA 憑證檔案目錄的路徑名稱。)

  • ssl_cert:伺服器公開金鑰憑證檔案的路徑名稱。此憑證可以傳送給用戶端,並根據用戶端擁有的 CA 憑證進行驗證。

  • ssl_key:伺服器私密金鑰檔案的路徑名稱。

若要在複寫副本上啟用加密連線,請使用 CHANGE REPLICATION SOURCE TO 陳述式。

  • 若要使用 CHANGE REPLICATION SOURCE TO 指定複本的憑證和 SSL 私鑰檔案,請加入適當的 SOURCE_SSL_xxx 選項,如下所示:

        -> SOURCE_SSL_CA = 'ca_file_name',
        -> SOURCE_SSL_CAPATH = 'ca_directory_name',
        -> SOURCE_SSL_CERT = 'cert_file_name',
        -> SOURCE_SSL_KEY = 'key_file_name',

    這些選項對應於具有相同名稱的 --ssl-xxx 選項,如加密連線的命令選項所述。要使這些選項生效,還必須設定 SOURCE_SSL=1。對於複寫連線,指定 SOURCE_SSL_CASOURCE_SSL_CAPATH 的值相當於設定 --ssl-mode=VERIFY_CA。只有在使用指定的資訊找到有效的相符憑證授權單位 (CA) 憑證時,連線嘗試才會成功。

  • 若要啟用主機名稱身分驗證,請加入 SOURCE_SSL_VERIFY_SERVER_CERT 選項,如下所示:

        -> SOURCE_SSL_VERIFY_SERVER_CERT=1,

    對於複寫連線,指定 SOURCE_SSL_VERIFY_SERVER_CERT=1 相當於設定 --ssl-mode=VERIFY_IDENTITY,如加密連線的命令選項中所述。要使此選項生效,還必須設定 SOURCE_SSL=1。主機名稱身分驗證不適用於自我簽署的憑證。

  • 若要啟用憑證撤銷清單 (CRL) 檢查,請加入 SOURCE_SSL_CRLSOURCE_SSL_CRLPATH 選項,如下所示:

        -> SOURCE_SSL_CRL = 'crl_file_name',
        -> SOURCE_SSL_CRLPATH = 'crl_directory_name',

    這些選項對應於具有相同名稱的 --ssl-xxx 選項,如加密連線的命令選項中所述。如果未指定這些選項,則不會執行 CRL 檢查。

  • 若要指定複本允許用於複寫連線的密碼、密碼套件和加密協定的清單,請使用 SOURCE_SSL_CIPHERSOURCE_TLS_VERSIONSOURCE_TLS_CIPHERSUITES 選項,如下所示:

        -> SOURCE_SSL_CIPHER = 'cipher_list',
        -> SOURCE_TLS_VERSION = 'protocol_list',
        -> SOURCE_TLS_CIPHERSUITES = 'ciphersuite_list',
    • SOURCE_SSL_CIPHER 選項指定複本允許用於複寫連線的一個或多個密碼的冒號分隔清單。

    • SOURCE_TLS_VERSION 選項指定複本允許用於複寫連線的 TLS 加密協定的逗號分隔清單,格式類似於 tls_version 伺服器系統變數。連線程序會協商使用來源和複本都允許的最高 TLS 版本。為了能夠連線,複本必須至少與來源有一個共同的 TLS 版本。

    • SOURCE_TLS_CIPHERSUITES 選項指定一個或多個密碼套件的冒號分隔清單,如果複寫連線使用 TLSv1.3,則複本允許使用這些密碼套件。如果此選項在 TLSv1.3 被使用時設定為 NULL(如果您不設定此選項,則預設值為 NULL),則允許預設啟用的密碼套件。如果您將此選項設定為空字串,則不允許任何密碼套件,因此不會使用 TLSv1.3。

    您可以在這些清單中指定的協定、密碼和密碼套件取決於用於編譯 MySQL 的 SSL 程式庫。有關格式、允許的值以及如果您未指定選項時的預設值,請參閱第 8.3.2 節「加密連線 TLS 協定和密碼」

    注意

    您可以使用 SOURCE_TLS_CIPHERSUITES 選項來指定任何密碼套件的選擇,包括僅使用非預設的密碼套件(如果您需要)。

  • 更新來源資訊後,在複本上啟動複寫程序,如下所示:

    mysql> START REPLICA;

    您可以使用 SHOW REPLICA STATUS 陳述式來確認已成功建立加密連線。

  • 要求複本使用加密連線並不能確保來源要求複本使用加密連線。如果您想要確保來源只接受使用加密連線的複本,請在來源上使用 REQUIRE SSL 選項建立複寫使用者帳戶,然後授予該使用者 REPLICATION SLAVE 權限。例如:

    mysql> CREATE USER 'repl'@'%.example.com' IDENTIFIED BY 'password'
        -> REQUIRE SSL;
    mysql> GRANT REPLICATION SLAVE ON *.*
        -> TO 'repl'@'%.example.com';

    如果您在來源上已有複寫使用者帳戶,您可以使用以下陳述式將 REQUIRE SSL 加入其中:

    mysql> ALTER USER 'repl'@'%.example.com' REQUIRE SSL;