Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Cómputo
Elastic Cloud Server
Bare Metal Server
Auto Scaling
Image Management Service
Dedicated Host
FunctionGraph
Cloud Phone Host
Huawei Cloud EulerOS
Redes
Virtual Private Cloud
Elastic IP
Elastic Load Balance
NAT Gateway
Direct Connect
Virtual Private Network
VPC Endpoint
Cloud Connect
Enterprise Router
Enterprise Switch
Global Accelerator
Gestión y gobernanza
Cloud Eye
Identity and Access Management
Cloud Trace Service
Resource Formation Service
Tag Management Service
Log Tank Service
Config
Resource Access Manager
Simple Message Notification
Application Performance Management
Application Operations Management
Organizations
Optimization Advisor
Cloud Operations Center
Resource Governance Center
Migración
Server Migration Service
Object Storage Migration Service
Cloud Data Migration
Migration Center
Cloud Ecosystem
KooGallery
Partner Center
User Support
My Account
Billing Center
Cost Center
Resource Center
Enterprise Management
Service Tickets
HUAWEI CLOUD (International) FAQs
ICP Filing
Support Plans
My Credentials
Customer Operation Capabilities
Partner Support Plans
Professional Services
Análisis
MapReduce Service
Data Lake Insight
CloudTable Service
Cloud Search Service
Data Lake Visualization
Data Ingestion Service
GaussDB(DWS)
DataArts Studio
IoT
IoT Device Access
Otros
Product Pricing Details
System Permissions
Console Quick Start
Common FAQs
Instructions for Associating with a HUAWEI CLOUD Partner
Message Center
Seguridad y cumplimiento
Security Technologies and Applications
Web Application Firewall
Host Security Service
Cloud Firewall
SecMaster
Data Encryption Workshop
Database Security Service
Cloud Bastion Host
Data Security Center
Cloud Certificate Manager
Situation Awareness
Managed Threat Detection
Blockchain
Blockchain Service
Servicios multimedia
Media Processing Center
Video On Demand
Live
SparkRTC
Almacenamiento
Object Storage Service
Elastic Volume Service
Cloud Backup and Recovery
Storage Disaster Recovery Service
Scalable File Service
Volume Backup Service
Cloud Server Backup Service
Data Express Service
Dedicated Distributed Storage Service
Contenedores
Cloud Container Engine
SoftWare Repository for Container
Application Service Mesh
Ubiquitous Cloud Native Service
Cloud Container Instance
Bases de datos
Relational Database Service
Document Database Service
Data Admin Service
Data Replication Service
GeminiDB
GaussDB
Distributed Database Middleware
Database and Application Migration UGO
TaurusDB
Middleware
Distributed Cache Service
API Gateway
Distributed Message Service for Kafka
Distributed Message Service for RabbitMQ
Distributed Message Service for RocketMQ
Cloud Service Engine
EventGrid
Dedicated Cloud
Dedicated Computing Cluster
Aplicaciones empresariales
ROMA Connect
Message & SMS
Domain Name Service
Edge Data Center Management
Meeting
AI
Face Recognition Service
Graph Engine Service
Content Moderation
Image Recognition
Data Lake Factory
Optical Character Recognition
ModelArts
ImageSearch
Conversational Bot Service
Speech Interaction Service
Huawei HiLens
Developer Tools
SDK Developer Guide
API Request Signing Guide
Terraform
Koo Command Line Interface
Distribución de contenido y cómputo de borde
Content Delivery Network
Intelligent EdgeFabric
CloudPond
Soluciones
SAP Cloud
High Performance Computing
Servicios para desarrolladores
ServiceStage
CodeArts
CodeArts PerfTest
CodeArts Req
CodeArts Pipeline
CodeArts Build
CodeArts Deploy
CodeArts Artifact
CodeArts TestPlan
CodeArts Check
Cloud Application Engine
aPaaS MacroVerse
KooPhone
KooDrive
Centro de ayuda/ TaurusDB/ Pasos iniciales/ Paso 2: Conectarse a la instancia de base de datos/ Conexión a una instancia de base de datos mediante JDBC

Conexión a una instancia de base de datos mediante JDBC

Actualización más reciente 2025-02-10 GMT+08:00

Aunque el certificado SSL es opcional si elige conectarse a una base de datos a través de la conectividad de bases de datos Java (JDBC), se recomienda descargar el certificado SSL para cifrar las conexiones por motivos de seguridad. De forma predeterminada, la encriptación de datos SSL está habilitado para las instancias de TaurusDB recién creadas. Habilitar SSL aumentará el tiempo de respuesta de la conexión de red y el uso de la CPU. Antes de habilitar SSL, evalúe el impacto en el rendimiento del servicio. Para obtener más información sobre cómo habilitar o deshabilitar SSL, consulte Configuración de SSL.

Prerrequisitos

Familiarícese con:

  • Conceptos básicos de la computadora
  • Lenguaje de programación Java
  • Conocimiento de JDBC

Conexión con el certificado SSL

El certificado SSL debe descargarse y verificarse para conectarse a bases de datos.

NOTA:

Si el valor ssl_type de un usuario de base de datos es x509, este método no está disponible.

Para comprobar el valor ssl_type del usuario actual, ejecute el siguiente comando:

select ssl_type from mysql.user where user = 'xxx';

  1. Descargue el certificado de CA o el paquete de certificados.

    1. En la página Instances, haga clic en el nombre de la instancia para ir a la página Basic Information.
    2. En el área DB Instance Information, haga clic en junto a SSL.

  2. Utilice la herramienta de claves para generar un archivo de almacén de confianza con el certificado de CA.

    <keytool installation path> ./keytool.exe -importcert -alias <MySQLCACert> -­file <ca.pem> -keystore <truststore_file> -storepass <password>
    Tabla 1 Descripción del parámetro

    Parámetro

    Descripción

    <keytool installation path>

    Directorio bin en la ruta de instalación JDK o JRE, por ejemplo, C:\Program Files (x86)\Java\jdk­11.0.7\bin.

    <MySQLCACert>

    Nombre del archivo de truststore. Establezca un nombre específico para el servicio para su identificación futura.

    <ca.pem>

    Nombre del certificado de CA descargado y descomprimido en 1, por ejemplo, ca.pem.

    <truststore_file>

    Ruta de acceso para almacenar el archivo truststore.

    <password>

    Contraseña del archivo truststore.

    Ejemplo de código (uso de keytool en la ruta de instalación de JDK para generar el archivo truststore):

    Owner:  CN=MySQL_Server_8.0.22_Auto_Generated_CA_Certificate
    Issuer: CN=MySQL_Server_8.0.22_Auto_Generated_CA_Certificate 
    Serial number: 1
    Valid from: Thu Feb 16 11:42:43 EST 2017 until: Sun Feb 14 11:42:43 EST 2027 
    Certificate fingerprints:
         MD5: 18:87:97:37:EA:CB:0B:5A:24:AB:27:76:45:A4:78:C1
         SHA1: 2B:0D:D9:69:2C:99:BF:1E:2A:25:4E:8D:2D:38:B8:70:66:47:FA:ED 
         SHA256:C3:29:67:1B:E5:37:06:F7:A9:93:DF:C7:B3:27:5E:09:C7:FD:EE:2D:18:86:F4:9C:40:D8:26:CB:DA:95: A0:24
         Signature algorithm name: SHA256withRSA Subject Public Key Algorithm: 2048-bit RSA key 
         Version: 1
         Trust this certificate? [no]: y
         Certificate was added to keystore

  3. Conéctese a la instancia TaurusDB a través de JDBC.

    jdbc:mysql://<instance_ip>:<instance_port>/<database_name>? 
    requireSSL=<value1>&useSSL=<value2>&verifyServerCertificate=<value3>&trustCertificateKeyStoreUrl=file: 
    <truststore_file>&trustCertificateKeyStorePassword=<password>
    Tabla 2 Descripción del parámetro

    Parámetro

    Descripción

    <instance_ip>

    Dirección IP de la instancia de base de datos.

    NOTA:
    • Si está accediendo a la instancia a través de ECS, instance_ip es la dirección IP privada de la instancia. Puede ver la dirección IP privada en el área Network Information del Basic Information.
    • Si está accediendo a la instancia a través de una red pública, instance_ip indica la EIP que se ha enlazado a la instancia. Puede ver la dirección IP privada en el área Network Information del Basic Information.

    <instance_port>

    Puerto de base de datos de la instancia. El puerto predeterminado es 3306.

    NOTA:

    Puede ver la dirección IP privada en el área Network Information del Basic Information.

    <database_name>

    Nombre de la base de datos utilizada para conectarse a la instancia. El valor predeterminado es mysql.

    <value1>

    Valor de requireSSL que indica si el servidor admite SSL. Puede ser cualquiera de las siguientes:

    • true: El servidor admite SSL.
    • false: El servidor no admite SSL.
    NOTA:

    Para obtener más información acerca de la relación entre requireSSL y sslmode consulte Tabla 3.

    <value2>

    Valor de useSSL que indica si el cliente utiliza SSL para conectarse al servidor. Puede ser cualquiera de las siguientes:

    • true: El cliente utiliza SSL para conectarse al servidor.
    • false: El cliente no utiliza SSL para conectarse al servidor.
      NOTA:

      Para obtener más información acerca de la relación entre useSSL y sslmode, consulte Tabla 3.

    <value3>

    Valor de verifyServerCertificate que indica si el cliente verifica el certificado de servidor. Puede ser cualquiera de las siguientes:

    • true: El cliente verifica el certificado del servidor.
    • false: El cliente no comprueba el certificado del servidor.
      NOTA:

      Para obtener más información acerca de la relación entre verifyServerCertificate y sslmode, consulte Tabla 3.

    <truststore_file>

    Ruta de acceso para almacenar el archivo de almacén de confianza configurado en 2.

    <password>

    Contraseña del archivo de almacén de confianza configurado en 2.

    Tabla 3 Relación entre parámetros de conexión y sslmode

    useSSL

    requireSSL

    verifyServerCertificate

    sslMode

    false

    N/A

    N/A

    DISABLED

    true

    false

    false

    PREFERRED

    true

    true

    false

    REQUIRED

    true

    N/A

    true

    VERIFY_CA

    Ejemplo de código (código Java para conectarse a una instancia de TaurusDB):

    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.ResultSet; 
    import java.sql.Statement;
    import java.sql.SQLException; 
    public class JDBCTest { 
        static final String USER = "xxx"; 
        static final String PASS = "xxx";
    
        public static void main(String[] args) {
            Connection conn = null; 
            Statement stmt = null;
    
            String url = "jdbc:mysql://<instance_ip>:<instance_port>/<database_name>?
    requireSSL=true&useSSL=true&verifyServerCertificate=true&trustCertificateKeyStoreUrl=file:
    <truststore_file>&trustCertificateKeyStorePassword=<password>";
            try { 
                Class.forName("com.mysql.cj.jdbc.Driver");
                conn = DriverManager.getConnection(url, USER, PASS);
                stmt = conn.createStatement(); 
                String sql = "show status like 'ssl%'";
                ResultSet rs = stmt.executeQuery(sql); 
    
                int columns = rs.getMetaData().getColumnCount();
                for (int i = 1; i <= columns; i++) {
                    System.out.print(rs.getMetaData().getColumnName(i));
                    System.out.print("\t");
                }
    
                while (rs.next()) { 
                    System.out.println(); 
                    for (int i = 1; i <= columns; i++) {
                        System.out.print(rs.getObject(i));
                        System.out.print("\t");
                    } 
                }
                rs.close(); 
                stmt.close(); 
                conn.close(); 
            } catch (SQLException se) { 
                se.printStackTrace(); 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } finally { 
                // release resource .... 
            } 
        } 
    }

Conexión sin el certificado SSL

NOTA:

No es necesario descargar el certificado SSL porque no se requiere la verificación del certificado en el servidor.

  1. Conéctese a su instancia TaurusDB a través de JDBC.

    jdbc:mysql://<instance_ip>:<instance_port>/<database_name>?useSSL=false
    Tabla 4 Descripción de parámetro

    Parámetro

    Descripción

    <instance_ip>

    Dirección IP de la instancia de base de datos.

    NOTA:
    • Si está accediendo a la instancia a través de ECS, instance_ip es la dirección IP privada de la instancia. Puede ver la dirección IP privada en el área Network Information del Basic Information.
    • Si está accediendo a la instancia a través de una red pública, instance_ip indica la EIP que se ha enlazado a la instancia. Puede ver la dirección IP privada en el área Network Information del Basic Information.

    <instance_port>

    Puerto de base de datos de la instancia. El puerto predeterminado es 3306.

    NOTA:

    Puede ver la dirección IP privada en el área Network Information del Basic Information.

    <database_name>

    Nombre de la base de datos utilizada para conectarse a la instancia. El valor predeterminado es mysql.

    Ejemplo de código (código Java para conectarse a una instancia de TaurusDB):

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class MyConnTest {
    	final public static void main(String[] args) {
    		Connection conn = null;
    		// set sslmode here.
    		// no ssl certificate, so do not specify path.
    		String url = "jdbc:mysql://192.168.0.225:3306/my_db_test?useSSL=false";
    		try {
    			Class.forName("com.mysql.jdbc.Driver");
    			conn = DriverManager.getConnection(url, "root", "password");
    			System.out.println("Database connected");
    
    			Statement stmt = conn.createStatement();
    			ResultSet rs = stmt.executeQuery("SELECT * FROM mytable WHERE columnfoo = 500");
    			while (rs.next()) {
    				System.out.println(rs.getString(1));
    			}
    			rs.close();
    			stmt.close();
    			conn.close();
    		} catch (Exception e) {
    			e.printStackTrace();
    			System.out.println("Test failed");
    		} finally {
    			// release resource ....
    		}
    	}
    }

Problemas relacionados

  • Síntoma

    Cuando utiliza JDK 8.0 o una versión posterior para conectarse a su instancia con un certificado SSL descargado, se notifica un error similar al siguiente:

    javax.net.ssl.SSLHandshakeException: No appropriate protocol (protocol is disabled or
    cipher suites are inappropriate)
        at sun.security.ssl.HandshakeContext.<init>(HandshakeContext.java:171) ~[na:1.8.0_292]
        at sun.security.ssl.ClientHandshakeContext.<init>(ClientHandshakeContext.java:98) ~
    [na:1.8.0_292]
        at sun.security.ssl.TransportContext.kickstart(TransportContext.java:220) ~
    [na:1.8.0_292]
        at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:428) ~
    [na:1.8.0_292]
        at
    com.mysql.cj.protocol.ExportControlled.performTlsHandshake(ExportControlled.java:316) ~
    [mysql-connector-java-8.0.17.jar:8.0.17]
        at
    com.mysql.cj.protocol.StandardSocketFactory.performTlsHandshake(StandardSocketFactory.java
    :188) ~[mysql-connector-java8.0.17.jar:8.0.17]
        at
    com.mysql.cj.protocol.a.NativeSocketConnection.performTlsHandshake(NativeSocketConnection.
    java:99) ~[mysql-connector-java8.0.17.jar:8.0.17]
        at
    com.mysql.cj.protocol.a.NativeProtocol.negotiateSSLConnection(NativeProtocol.java:331) ~
    [mysql-connector-java8.0.17.jar:8.0.17]
    ... 68 common frames omitted
  • Solución

    Especifique los valores de parámetro correspondientes en el enlace de código de 3 en función del paquete JAR utilizado por el cliente. Ejemplo:

    • mysql-connector-java-5.1.xx.jar
      jdbc:mysql://<instance_ip>:<instance_port>/<database_name>? 
       requireSSL=true&useSSL=true&verifyServerCertificate=true&trustCertificateKeyStoreUrl=file: 
       <truststore_file>&trustCertificateKeyStorePassword=<password>& enabledTLSProtocols=TLSv1.2
    • mysql-connector-java-8.0.xx.jar
      jdbc:mysql://<instance_ip>:<instance_port>/<database_name>? 
       requireSSL=true&useSSL=true&verifyServerCertificate=true&trustCertificateKeyStoreUrl=file: 
       <truststore_file>&trustCertificateKeyStorePassword=<password>& tlsVersions =TLSv1.2

Utilizamos cookies para mejorar nuestro sitio y tu experiencia. Al continuar navegando en nuestro sitio, tú aceptas nuestra política de cookies. Descubre más

Comentarios

Comentarios

Comentarios

0/500

Seleccionar contenido

Enviar el contenido seleccionado con los comentarios