全部產品
Search
文件中心

Data Management:通過MySQL協議訪問執行個體

更新時間:Jun 30, 2024

本文介紹應用程式如何通過MySQL協議訪問已開啟安全訪問代理的目標執行個體。

前提條件

注意事項

開啟安全訪問代理的安全協同執行個體受安全規則的限制,系統規定單次查詢資料最多返回100000行資料。

設定單次查詢最大返回行數

前往DMS安全與規範 > 安全規則 > 安全訪問代理中設定單次查詢最大返回行數。

image

說明
  • 若希望避免安全規則的限制,請使用資料庫控制台提供的串連地址訪問資料庫,或聯絡DMS支援人員評估具體情境。

  • 如果是非安全協同執行個體,不支援自主配置查詢最大返回行數。預設查詢最大返回行數為3000。

使用限制

  • MySQL用戶端設定的空閑逾時時間不能超過900秒。

  • 如果使用資料庫連接池,則串連池探活間隔不能超過900秒。

說明

建議使用串連池,並且將串連池探活時間間隔設定為750秒。

訪問樣本

您可以通過命令列、資料庫管理工具、程式碼來訪問已開啟安全訪問代理的目標執行個體。

使用MySQL命令列

格式如下:

mysql -h<host> -P<port> -u<user_name> -p<password> <database> -e '<sql_statements>'

參數說明如下:

參數名

說明

host

目標執行個體的串連地址。在安全訪問代理頁面中查看內網串連或公網串連的MySQL協議地址,該地址即為目標執行個體的串連地址。

port

目標執行個體的連接埠號碼,例如3306。在安全訪問代理頁面的內網串連或公網串連的MySQL協議地址中可以看到連接埠號碼。

user_name

經授權後,DMS為您分配的AccessID。在安全訪問代理頁面的被授權人列表可以查看自己的AccessID。

password

經授權後,DMS為您分配的AccessSecret。在安全訪問代理頁面的被授權人列表可以查看自己的AccessSecret。

database

目標執行個體中的資料庫的名稱。

sql_statements

您要執行的SQL命令。例如:SHOW DATABASES。

程式碼範例如下:

mysql -hdpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com -P3306 -uAccessID -pAccessSecret Schema -e 'SHOW DATABASES'

使用程式

說明

樣本的Python為Python 2。

//dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com:3306是目標執行個體的串連地址與連接埠號碼。可在安全訪問代理頁面的MySQL協議地址擷取串連地址與連接埠號碼。
//schema是目標執行個體的資料庫名稱。
String url = "jdbc:mysql://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com:3306/schema";
Properties properties = new Properties();
//AccessID是您的AccessID。可在安全訪問代理頁面的被授權人列表中查看。
properties.setProperty("user", "AccessID");
//AccessSecret是您的AccessSecret。可在安全訪問代理頁面的被授權人列表中查看。
properties.setProperty("password", "AccessSecret");
try (Connection connection = DriverManager.getConnection(url, properties)) {
    try (Statement statement = connection.createStatement()) {
        //使用execute方法執行SQL語句。本樣本以SHOW DATABASES為例,您也可以換成其它SQL語句。
        statement.execute("SHOW DATABASES");
        ResultSet resultSet = statement.getResultSet();
        while (resultSet.next()) {
            System.out.println(resultSet.getString(1));
        }
    }
} catch (Exception e) {
    e.printStackTrace();
}
import pymysql

try:
    #host為目標執行個體的串連地址。
    #port為目標執行個體的連接埠號碼。
    #user為您的AccessID。可在安全訪問代理頁面的被授權人列表中查看。
    #password為您的AccessSecret。可在安全訪問代理頁面的被授權人列表中查看。
    #database為目標執行個體的資料庫名稱。
    conn = pymysql.connect(host='dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com', port=3306, user='AccessID', password="AccessSecret",database ='schema')  
    cur = conn.cursor(pymysql.cursors.DictCursor)
    #使用execute方法執行SQL語句。本樣本以SHOW DATABASES為例,您也可以換成其他SQL語句。
    cur.execute('SHOW DATABASES')
    rs = cur.fetchall()
    print rs
finally:
    cur.close()
    conn.close()
var mysql  = require('mysql');  
 
var connection = mysql.createConnection({
    //host為目標執行個體的串連地址。 
    host     : 'dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com',  
    //user為您的AccessID。可在安全訪問代理頁面的被授權人列表中查看。     
    user     : 'AccessID', 
    //password為您的AccessSecret。可在安全訪問代理頁面的被授權人列表中查看。             
    password : 'AccessSecret', 
    //port為目標執行個體的連接埠號碼。      
    port     : '3306',  
    //database為目標執行個體的資料庫名稱。                 
    database : 'schema' 
}); 
 
connection.connect();

//使用execute方法執行SQL語句。本樣本以SHOW DATABASES為例,您也可以換成其他SQL語句。 
connection.query('SHOW DATABASES', function(err, result) {
    console.log(result);
});
 
connection.end();

使用資料庫管理工具

以Navicat用戶端為例,配置以下資訊:

  • 主機:目標執行個體的串連地址。

  • 連接埠號碼:目標執行個體的連接埠號碼。

  • 使用者名稱:AccessID。

  • 密碼:AccessSecret。

navicat