Cloud SQL Connector for Java
The Cloud SQL Connector for Java is a library that provides IAM-based authorization and encryption when connecting to a Cloud SQL instance. It can not provide a network path to a Cloud SQL instance if one is not already present. See the Connecting Overview page for more information on connecting to a Cloud SQL instance.
Usage
For usage information specific to your database engine and driver, see the pages below:
JDBC:
- Connecting to MySQL using JDBC
- Connecting to Postgres using JDBC
- Connecting to SQL Server using JDBC
R2DBC:
- Connecting to MySQL using R2DBC
- Connecting to Postgres using R2DBC
- Connecting to SQL Server using R2DBC
For examples of this library being used in the context of an application, check out the sample applications located here.
Authentication
This library uses Application Default Credentials to authenticate the connection to the Cloud SQL server. For more details, see the previously mentioned link.
To activate credentials locally, use the following gcloud command:
gcloud auth application-default login
Building the Drivers
To build a fat JAR containing the JDBC driver with the bundles Socket Factory dependencies you can issue the following Maven command from the location containing the project pom.xml:
mvn -P jar-with-dependencies clean package -DskipTests
This will create a target sub-folder within each of the module directories. Within these target directories you'll find the JDBC driver files.
Example:
mysql-socket-factory-connector-j-8–1.2.1-jar-with-dependencies.jar
postgres-socket-factory-1.2.1-jar-with-dependencies.jar
Firewall configuration
The Cloud SQL proxy establishes connections to Cloud SQL instances using port 3307. Applications that are protected by a firewall may need to be configured to allow outgoing connections on TCP port 3307. A connection blocked by a firewall typically results in an error stating connection failure (e.g. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
).
Connect with IntelliJ
In order to connect IntelliJ to your Cloud SQL instance, you will need to add this library as a jar with dependencies in "Additional Files" section on the driver settings page. Prebuilt fat jars can be found on the Releases page for this purpose.
Troubleshooting
Here are some troubleshooting tips to resolve common issues that come up when using the Java Connector:
- Make sure you are using the latest version of the Cloud SQL Connector and your database driver to avoid incompatibilities. Some older versions of drivers are not supported
- The Java connector provides authorization for connections, but it does not provide new paths to connectivity. For example, in order to connect to a Cloud SQL instance using a Private IP address, your application must already have VPC access.