全部產品
Search
文件中心

ApsaraDB RDS:通過應用程式訪問RDS MySQL資料庫

更新時間:Feb 14, 2025

本文介紹如何通過Java、Python或C的應用程式訪問RDS MySQL資料庫。

參數說明

範例程式碼中的參數說明如下。

參數

說明

Host

RDS執行個體的內網地址或外網地址。

  • 若您的用戶端部署在ECS執行個體上,且ECS執行個體與要訪問的RDS執行個體的地區、網路類型相同,請使用內網地址。例如ECS執行個體和RDS執行個體都是華東1的專用網路執行個體,使用內網地址串連能提供安全高效的訪問。

  • 其他情況只能使用外網地址。

關於如何查看RDS執行個體的內外網地址及連接埠資訊,請參見查看和管理執行個體串連地址和連接埠

Port

若使用內網串連,需輸入RDS執行個體的內網連接埠。若使用外網串連,需輸入RDS執行個體的外網連接埠。

myDatabase

目標資料庫名稱。

myUsername

要訪問RDS執行個體的帳號名稱。

myPassword

帳號對應的密碼。

範例程式碼

說明

以下代碼以在資料庫中查詢名為courses表為例,實際執行代碼時,請按實際情況填寫。

Java範例程式碼

說明

以Maven專案為例,請先在pom.xml檔案中添加DriverManager依賴,程式碼範例:

<dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>8.0.27</version>
</dependency>
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class DatabaseConnection
{
    public static void main(String args[]) {
        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`";            //輸入希望執行的SQL。
            resultSet = statement.executeQuery(selectSql);

            while (resultSet.next()) {
                System.out.println(resultSet.getString("name"));
            }
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

Python3範例程式碼

說明

請先安裝PyMySQL。

  • Python3安裝命令:pip3 install PyMySQL

  • Python2安裝命令:pip install pymysql==0.9.3

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)
finally:
    connection.close()

C範例程式碼

說明

請先安裝mysql.h標頭檔,以CentOS為例,執行如下命令:

sudo yum install mysql-devel
#include <stdio.h>
#include <mysql.h>
#include <string.h>

int main(void)
{
    MYSQL *t_mysql;

    MYSQL_RES       *res = NULL;
    MYSQL_ROW       row;
    char            *query_str = NULL;
    int             rc, i, fields;
    int             rows;

    char select[] = "select * from courses";    // 輸入希望執行的SQL。
    t_mysql = mysql_init(NULL);

    if(NULL == t_mysql){
        printf("init failed\n");
    }

    if(NULL == mysql_real_connect(t_mysql, "<Host>", "<myUsername>", "<myPassword>", "<myDatabase>",
            <Port>, NULL, 0)){
        printf("connect failed\n");
    }

    if(mysql_real_query(t_mysql, select, strlen(select)) != 0){
        printf("select failed\n");
    }

    res = mysql_store_result(t_mysql);
    if (NULL == res) {
         printf("mysql_restore_result(): %s\n", mysql_error(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_close(t_mysql);

}
                    

串連失敗

串連失敗時,建議根據報錯資訊來解決串連問題。

更多串連方案

  • 您可以通過Function Compute訪問ApsaraDB RDS for MySQL,在函數中配置Virtual Private Cloud相關資訊並在資料庫中配置白名單,實現VPC內資料庫的訪問和操作。具體操作,請參見訪問RDS MySQL樣本

  • 更多訪問RDS MySQL資料庫的樣本,請參見Function ComputePython訪問MySQL資料庫