Hubungkan ke instans ApsaraDB RDS for MySQL dari aplikasi Java, Python, atau C menggunakan driver JDBC, pustaka PyMySQL, atau MySQL C API.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Memiliki instans ApsaraDB RDS for MySQL yang sedang berjalan.
Sebuah database dan akun yang dibuat pada Instans
Menambahkan alamat IP host aplikasi Anda ke daftar putih instans.
Peroleh informasi koneksi
Ambil Titik akhir internal atau publik beserta Port instans RDS Anda sebelum menulis kode koneksi.
Titik akhir internal: Gunakan ini jika aplikasi Anda berjalan di instans Elastic Compute Service (ECS) yang berada di wilayah yang sama dan memiliki jenis jaringan yang sama dengan instans RDS.
Titik akhir publik: Gunakan ini untuk semua skenario lainnya, seperti menghubungkan dari mesin lokal atau instans ECS di wilayah berbeda.
Untuk informasi lebih lanjut, lihat Melihat dan mengubah Titik akhir internal dan publik serta nomor Port instans ApsaraDB RDS for MySQL.
Parameter koneksi
Parameter berikut muncul dalam semua contoh kode pada topik ini.
| Parameter | Deskripsi |
|---|---|
<Host> | Titik akhir internal atau publik instans RDS. |
<Port> | Nomor port yang sesuai dengan jenis titik akhir: port internal untuk koneksi internal, port publik untuk koneksi Internet. |
<myDatabase> | Nama database. |
<myUsername> | Username akun yang digunakan untuk menghubungkan ke instans. |
<myPassword> | Password akun tersebut. |
Koneksi menggunakan Java
Contoh Java menggunakan JDBC dan driver mysql-connector-java untuk membuka koneksi dan menjalankan kueri SELECT terhadap tabel courses.
Instal driver
Tambahkan dependensi berikut ke file pom.xml dalam proyek Maven Anda:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>Kode contoh
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DatabaseConnection {
public static void main(String args[]) {
// Ganti placeholder dengan detail koneksi aktual Anda
String connectionUrl = "jdbc:mysql://<Host>:<Port>/<myDatabase>";
ResultSet resultSet;
try (Connection connection = DriverManager.getConnection(connectionUrl, "<myUsername>", "<myPassword>");
Statement statement = connection.createStatement()) {
String selectSql = "SELECT * FROM `courses`";
resultSet = statement.executeQuery(selectSql);
while (resultSet.next()) {
System.out.println(resultSet.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}Output yang diharapkan
Jika koneksi berhasil dan tabel courses berisi data, nilai kolom name setiap baris akan dicetak ke konsol:
Introduction to Cloud Computing
Database Fundamentals
Advanced Java ProgrammingJika Anda melihat jejak stack SQLException sebagai gantinya, lihat bagian Troubleshooting.
Koneksi menggunakan Python
Contoh Python menggunakan PyMySQL untuk menghubungkan dan menjalankan kueri SELECT terhadap tabel courses.
Instal PyMySQL
Jalankan perintah yang sesuai dengan versi Python Anda:
Python 3:
pip3 install PyMySQLPython 2:
pip install pymysql==0.9.3
Kode contoh
import pymysql
connection = pymysql.connect(
host='<Host>',
port=<Port>,
user='<myUsername>',
passwd='<myPassword>',
db='<myDatabase>'
)
try:
with connection.cursor() as cursor:
sql = "SELECT * FROM `courses`"
cursor.execute(sql)
for result in cursor:
print(result)
except pymysql.err.OperationalError as e:
if e.args[0] == 1045:
print("Akses ditolak: periksa username dan password Anda.")
elif e.args[0] == 1049:
print("Database tidak dikenal: periksa nama database.")
else:
print(f"Kesalahan koneksi: {e}")
finally:
connection.close()Output yang diharapkan
Jika koneksi berhasil dan tabel courses berisi data, setiap baris akan dicetak sebagai Tupel:
('Introduction to Cloud Computing',)
('Database Fundamentals',)
('Advanced Java Programming',)Koneksi menggunakan C
Contoh C menggunakan MySQL C API untuk menghubungkan dan menjalankan kueri SELECT terhadap tabel courses.
Instal pustaka MySQL C
Pada CentOS, jalankan:
sudo yum install mysql-develKode contoh
#include <stdio.h>
#include <mysql.h>
#include <string.h>
int main(void)
{
MYSQL *t_mysql;
MYSQL_RES *res = NULL;
MYSQL_ROW row;
int rc, i, fields;
int rows;
char select[] = "select * from courses";
t_mysql = mysql_init(NULL);
if (NULL == t_mysql) {
printf("init failed\n");
return 1;
}
/* Ganti placeholder dengan detail koneksi aktual Anda */
if (NULL == mysql_real_connect(t_mysql, "<Host>", "<myUsername>", "<myPassword>",
"<myDatabase>", <Port>, NULL, 0)) {
printf("connect failed: %s\n", mysql_error(t_mysql));
return 1;
}
if (mysql_real_query(t_mysql, select, strlen(select)) != 0) {
printf("select failed: %s\n", mysql_error(t_mysql));
mysql_close(t_mysql);
return 1;
}
res = mysql_store_result(t_mysql);
if (NULL == res) {
printf("mysql_store_result(): %s\n", mysql_error(t_mysql));
mysql_close(t_mysql);
return 0;
}
fields = mysql_num_fields(res);
while ((row = mysql_fetch_row(res))) {
for (i = 0; i < fields; i++) {
printf("%s\t", row[i]);
}
printf("\n");
}
mysql_free_result(res);
mysql_close(t_mysql);
return 0;
}Output yang diharapkan
Jika koneksi berhasil, setiap baris dari tabel courses akan dicetak dengan kolom yang dipisahkan tab:
Introduction to Cloud Computing
Database Fundamentals
Advanced Java ProgrammingKode contoh melakukan kueri terhadap tabel courses sebagai contoh. Ganti pernyataan SQL dan nama tabel dengan kueri yang sesuai dengan skema database aktual Anda.
Troubleshooting
Jika koneksi gagal, periksa pesan kesalahan yang dikembalikan oleh driver atau pustaka. Penyebab umum meliputi:
Titik akhir atau Port salah — verifikasi nilainya dari bagian Peroleh informasi koneksi.
Username atau password salah — periksa kembali kredensial akun.
Alamat IP belum ditambahkan ke daftar putih — tambahkan IP host aplikasi ke daftar putih instans.
Titik akhir publik belum diaktifkan — aktifkan Titik akhir publik di Konsol jika menghubungkan dari luar VPC.
Untuk panduan troubleshooting lengkap, lihat Mengatasi masalah ketika Anda tidak dapat menghubungkan ke instans RDS.
Langkah selanjutnya
Untuk menghubungkan dari fungsi serverless, konfigurasikan akses VPC untuk fungsi Anda dan tambahkan IP fungsi tersebut ke daftar putih RDS. Lihat Mengakses database ApsaraDB RDS for MySQL dalam dokumentasi Function Compute.
Untuk contoh koneksi Python lainnya, lihat repositori start-fc-db di GitHub.