本文介绍应用程序如何通过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。