配置流程

在pom.xml加入JDBC driver mysql-connector-java

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.7.29</version>
</dependency>

附MySQL版本查询命令:

mysql -V

application.yml文件配置

MySQL JDBC driver URL

protocol//[hosts][/database][?properties]

简单示例:

protocol – jdbc:mysql:
host – mysql.db.server:3306
database – my_database
properties – useSSL=false&serverTimezone=UTC

扩展

Protocol

除了"jdbc:mysql:"协议还支持:

Load-balancing JDBC connections – jdbc:mysql:loadbalance:
JDBC replication connections – jdbc:mysql:replication: 

Hosts

如果需要处理多个主机,可以在逗号分隔的列表中列出主机:host1,host2,..., hostN。

还可以用方括号将逗号分隔的主机列表括起来:[host1, host2,...,hostN]。

例如:

jdbc:mysql://myhost1:3306,myhost2:3307/db_name
jdbc:mysql://[myhost1:3306,myhost2:3307]/db_name
jdbc:mysql:loadbalance://myhost1:3306,myhost2:3307/db_name?user=dbUser&password=1234567&loadBalanceConnectionGroup=group_name&ha.enableJMX=true

Properties and User Credentials

有效的全局属性将应用于所有主机。

格式:

属性前面有一个问号"?",并写成key=value键值对,由"&"符号分隔:

jdbc:mysql://myhost1:3306/db_name?prop1=value1&prop2=value2

可以将User Credentials放在属性列表中:

jdbc:mysql://myhost1:3306/db_name?user=root&password=mypass

可以在每个主机前面加上"user:password@host"格式:

jdbc:mysql://root:mypass@myhost1:3306/db_name

如果 JDBC URL 包含主机列表,并且所有主机都使用相同的User Credentials,则可以在主机列表前面加上前缀:

jdbc:mysql://root:mypass[myhost1:3306,myhost2:3307]/db_name

详细文档:

MySQL :: MySQL Connector/J 8.0 Developer Guide :: 6.2 Connection URL Syntax

MySQL :: MySQL Connector/J 8.0 Developer Guide :: 6.3 Configuration Properties

MySQL连接示例

MySQL database: “my_database

host: “mysql.db.server

@Test
public void givenMysqlDb_thenCreateConnectionObject() {
    String jdbcUrl = "jdbc:mysql://mysql.db.server:3306/my_database?useSSL=false&serverTimezone=UTC";    
    String username = "User";
    String password = "1234567";
    try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
        assertNotNull(conn);
    } catch (SQLException e) {
        System.err.format("SQL State: %s\n%s", e.getSQLState(), e.getMessage());
    }
}