Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Connect to ApsaraDB RDS for MySQL over SSL

Última atualização: Jun 26, 2026

Este tópico descreve como se conectar a uma instância do ApsaraDB RDS for MySQL usando a CLI do MySQL ou JDBC após ativar a criptografia SSL.

Pré-requisitos

Procedimento

Conectar-se ao MySQL usando um certificado de nuvem

Após ativar a criptografia SSL, a conexão entre seu cliente e a instância do ApsaraDB RDS for MySQL será criptografada dependendo do tipo de cliente e de sua configuração. Modifique as configurações do cliente ou o código da aplicação para exigir uma conexão criptografada e verifique a identidade da instância.

Importante

Instâncias que executam MySQL 8.4, 8,0 ou 5,7 com versão secundária do mecanismo 20241130 ou posterior suportam criptografia SSL forçada. Se você ativar a criptografia SSL forçada, os clientes só poderão se conectar à instância por meio de uma conexão criptografada com SSL.

MySQL CLI

Para clientes que executam MySQL 5.7.11 ou posterior, adicione a opção --ssl-mode ao comando de conexão para configurar a criptografia SSL.

Nota

Para clientes MariaDB e clientes MySQL que executam uma versão anterior à 5.7.11, use opções como --ssl e --ssl-verify-server-cert. Para mais informações, consulte a documentação oficial do MariaDB e do MySQL.

  • --ssl-mode=DISABLED: A conexão não é criptografada.

  • --ssl-mode=PREFERRED ou sem a opção --ssl-mode: Tenta estabelecer uma conexão criptografada. Se a tentativa falhar, o cliente usa uma conexão não criptografada.

  • --ssl-mode=REQUIRED: Uma conexão criptografada é obrigatória. A conexão falha se não for possível estabelecer uma conexão criptografada.

  • --ssl-mode=VERIFY_CA: Exige uma conexão criptografada e verifica o certificado do servidor em relação ao certificado CA local.

  • --ssl-mode=VERIFY_IDENTITY: Exige uma conexão criptografada, verifica o certificado do servidor em relação ao certificado CA local e valida se o nome do host ou endereço IP no certificado do servidor corresponde ao usado para a conexão.

Exemplo 1: Tenta estabelecer uma conexão criptografada. Se a tentativa falhar, uma conexão não criptografada será usada.

mysql -h {endpoint} -u {username} -p --ssl-mode=PREFERRED

Exemplo 2: Exige uma conexão criptografada e a verificação do certificado do servidor.

mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={path-to-ca-certificate}/ApsaraDB-CA-Chain.pem
Nota
  • Nos exemplos anteriores, substitua {endpoint}, {username} e {path-to-ca-certificate} pelos seus valores reais.

  • Para mais informações sobre a opção --ssl-mode, consulte a documentação oficial do MySQL.

MySQL Workbench

  1. Abra o MySQL Workbench e escolha Database > Manage Connections.

  2. Insira o endpoint, o nome de usuário e a senha.

  3. Na aba SSL, configure o parâmetro Use SSL, especifique o certificado CA baixado no formato PEM no campo SSL CA File e clique em Test Connection ou OK.

    Nota

    Para obter uma descrição das opções do parâmetro Use SSL, consulte as descrições de --ssl-mode na seção MySQL CLI.

Data Management (DMS)

Ao adicionar uma instância do ApsaraDB RDS for MySQL no Data Management (DMS), defina o parâmetro Enable SSL. Para mais informações, consulte Registrar uma instância de banco de dados do Alibaba Cloud.

Também é possível clicar com o botão direito em uma instância existente, selecione Edit Instance e configure as definições na seção Advanced Information.

Código da aplicação

Java

O Connector/J (mysql-connector-java) é o driver JDBC oficial para MySQL. Este exemplo usa mysql-connector-java 8.0.19 como dependência.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
Nota

O código de exemplo a seguir usa a propriedade sslMode para especificar o modo SSL. Essa propriedade é suportada no mysql-connector-java 8.0.13 e versões posteriores. Se você usar uma versão anterior, deverá usar as propriedades useSSL, requireSSL e verifyServerCertificate. Para mais informações, consulte a documentação do MySQL.

Código de exemplo:

package com.aliyun.sample;

import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class Sample {

    public static void main(String[] args) {

        Connection conn = null;
        MysqlDataSource mysqlDS=null;

        try{
            mysqlDS = new MysqlDataSource();
            // Set SslMode as needed. For available options, see the MySQL CLI section.
            mysqlDS.setSslMode("VERIFY_IDENTITY");
          
            // The truststore stores the CA certificate. The truststore type is set to JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Replace the path after file:/ with the path to your ApsaraDB-CA-Chain.jks file.
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            // The password for the downloaded JKS file is apsaradb and cannot be changed.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            // Your database endpoint
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
            // Your database port
            mysqlDS.setPort(3306);
            // Your database username
            mysqlDS.setUser("xxxxxx");
            // Your database password
            mysqlDS.setPassword("xxxxxx");
            // Your database name
            mysqlDS.setDatabaseName("xxxxxx");

            conn = mysqlDS.getConnection();

        }catch(Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

Python

# Install pymysql: pip install pymysql

import pymysql

try:
    ssl_config = {"ca":"/path/to/path/ca.crt", "mode":"VERIFY_CA"}   # "ca" is the CA certificate path. "mode" is ssl-mode.
    conn = pymysql.connect(host='******.mysql.rds.aliyuncs.com', user='*****', passwd='******', db='*****', ssl=ssl_config)
    cursor = conn.cursor()
    cursor.execute('select version()')
    data = cursor.fetchone()
    print('Database version:', data[0])
    cursor.close()
except pymysql.Error as e:
    print(e)

Conectar-se ao MySQL usando um certificado personalizado

MySQL CLI

Para clientes que executam MySQL 5.7.11 ou posterior, adicione a opção --ssl-mode ao comando de conexão para configurar a criptografia SSL.

Nota

Para clientes MariaDB e clientes MySQL que executam uma versão anterior à 5.7.11, use opções como --ssl e --ssl-verify-server-cert. Para mais informações, consulte a documentação oficial do MariaDB e do MySQL.

  • --ssl-mode=DISABLED: A conexão não é criptografada.

  • --ssl-mode=PREFERRED ou sem a opção --ssl-mode: Tenta estabelecer uma conexão criptografada. Se a tentativa falhar, o cliente usa uma conexão não criptografada.

  • --ssl-mode=REQUIRED: Uma conexão criptografada é obrigatória. A conexão falha se não for possível estabelecer uma conexão criptografada.

  • --ssl-mode=VERIFY_CA: Exige uma conexão criptografada e verifica o certificado do servidor em relação ao certificado CA local.

  • --ssl-mode=VERIFY_IDENTITY: Exige uma conexão criptografada, verifica o certificado do servidor em relação ao certificado CA local e valida se o nome do host ou endereço IP no certificado do servidor corresponde ao usado para a conexão.

Exemplos:

  1. Tenta estabelecer uma conexão criptografada. Se a tentativa falhar, uma conexão não criptografada será usada.

    mysql -h {endpoint} -u {username} -p --ssl-mode=PREFERRED
  2. Exige uma conexão criptografada e a verificação do certificado do servidor.

    mysql -h {endpoint} -u {username} -p --ssl-mode=VERIFY_CA --ssl-ca={path-to-custom-ca-certificate}
Nota
  • No exemplo anterior, substitua {RDS endpoint}, {RDS username}, {CA certificate path} e {custom CA certificate path} pelos valores reais.

  • Para mais informações sobre a opção --ssl-mode, consulte a documentação oficial do MySQL.

MySQL Workbench

  1. Abra o MySQL Workbench e escolha Database > Manage Connections.

  2. Insira o endpoint, o nome de usuário e a senha.

  3. Na aba SSL, configure o parâmetro Use SSL e especifique seu certificado CA personalizado no campo SSL CA File. Em seguida, clique em Test Connection ou OK.

Nota

Para obter uma descrição das opções do parâmetro Use SSL, consulte as descrições de --ssl-mode na seção MySQL CLI.

Data Management (DMS)

Ao adicionar uma instância do ApsaraDB RDS for MySQL no Data Management (DMS), defina o parâmetro Enable SSL. Para mais informações, consulte Registrar uma instância de banco de dados do Alibaba Cloud.

Também é possível clicar com o botão direito em uma instância existente, selecione Edit Instance e configure as definições na seção Advanced Information.

Código da aplicação

Java

O Connector/J (mysql-connector-java) é o driver JDBC oficial para MySQL. Este exemplo usa mysql-connector-java 8.0.19 como dependência.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.19</version>
</dependency>
Importante

Se você usar um certificado personalizado, deverá gerar manualmente um arquivo JKS da seguinte forma:

  1. Converta seu certificado de cliente e chave privada para o formato PKCS#12, pois o utilitário keytool não suporta diretamente a importação de chave privada e certificado no formato PEM. Use o OpenSSL para realizar a conversão:

    openssl pkcs12 -export -in {custom-ca-certificate} -inkey {custom-ca-private-key} -out keystore.p12 -name ganyang -CAfile {custom-ca-certificate}
    # Enter a password. This password is required when you establish a connection.
    Enter Encryption Password:
    Verifying - Enter Encryption Password:
  2. Use o utilitário keytool para importar o arquivo PKCS#12 para um novo arquivo JKS:

    keytool -importkeystore -deststorepass JKS-password -destkeypass key-password -destkeystore keystore.jks -deststoretype pkcs12 -srckeystore keystore.p12 -srcstoretype pkcs12 -srcstorepass P12-password -alias your-alias

    Parâmetros:

    -deststorepass: The password for the JKS file.
    -destkeypass: The password for the key in the JKS file.
    -destkeystore: The JKS file to create or an existing JKS file.
    -deststoretype: The destination file type (PKCS#12).
    -srckeystore: The source PKCS#12 file.
    -srcstoretype: The source file type (PKCS#12).
    -srcstorepass: The password for the source PKCS#12 file.
    -alias: The alias for the client certificate and private key.
  3. Obtenha o arquivo JKS: Após a importação bem-sucedida, localize o arquivo keystore.jks no diretório de execução.

Nota

O código de exemplo a seguir usa a propriedade sslMode para especificar o modo SSL. Essa propriedade é suportada no mysql-connector-java 8.0.13 e versões posteriores. Se você usar uma versão anterior, deverá usar as propriedades useSSL, requireSSL e verifyServerCertificate. Para mais informações, consulte a documentação do MySQL.

package com.aliyun.sample;

import com.mysql.cj.jdbc.MysqlDataSource;
import java.sql.Connection;
import java.sql.SQLException;

public class Sample {

    public static void main(String[] args) {

        Connection conn = null;
        MysqlDataSource mysqlDS=null;

        try{
            mysqlDS = new MysqlDataSource();
            // Set SslMode as needed. For available options, see the MySQL CLI section.
            mysqlDS.setSslMode("VERIFY_IDENTITY");

            // The following example shows the connection parameters. Replace the truststore values with the path and password of the JKS file that you generated from your custom certificate.
            // The truststore stores the CA certificate. The truststore type is set to JKS.
            mysqlDS.setTrustCertificateKeyStoreType("JKS");
            // Replace the path after file:/ with the path to your custom JKS file.
            mysqlDS.setTrustCertificateKeyStoreUrl("file:/D:\\ApsaraDB-CA-Chain\\ApsaraDB-CA-Chain.jks");
            // Use the password you created for your custom JKS file.
            mysqlDS.setTrustCertificateKeyStorePassword("apsaradb");
          
            // Your database endpoint
            mysqlDS.setServerName("rm-xxxxxx.mysql.rds.aliyuncs.com");
            // Your database port
            mysqlDS.setPort(3306);
            // Your database username
            mysqlDS.setUser("xxxxxx");
            // Your database password
            mysqlDS.setPassword("xxxxxx");
            // Your database name
            mysqlDS.setDatabaseName("xxxxxx");

            conn = mysqlDS.getConnection();

        }catch(Exception e){
            e.printStackTrace();
        } finally {
            try {
                if (conn != null)
                    conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

Python

# Install pymysql: pip install pymysql

import pymysql

try:
    ssl_config = {"ca":"/path/to/path/ca.crt", "mode":"VERIFY_CA"}   # "ca" is the CA certificate path. "mode" is ssl-mode.
    conn = pymysql.connect(host='******.mysql.rds.aliyuncs.com', user='*****', passwd='******', db='*****', ssl=ssl_config)
    cursor = conn.cursor()
    cursor.execute('select version()')
    data = cursor.fetchone()
    print('Database version:', data[0])
    cursor.close()
except pymysql.Error as e:
    print(e)