本文介紹應用程式如何通過MySQL協議訪問已開啟安全訪問代理的目標執行個體。
前提條件
執行個體已開啟安全訪問代理。具體操作,請參見開啟安全訪問代理。
您已獲得安全訪問代理的授權。具體操作,請參見申請安全訪問代理授權。
注意事項
開啟安全訪問代理的安全協同執行個體受安全規則的限制,系統規定單次查詢資料最多返回100000行資料。
若希望避免安全規則的限制,請使用資料庫控制台提供的串連地址訪問資料庫,或聯絡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。

