本文介绍应用程序如何通过MySQL协议访问已开启安全访问代理的目标实例。
前提条件
- 实例已开启安全访问代理。
说明 在已开通页面,查看已开启安全访问代理的实例列表。如需开启,请参见开启安全访问代理。的
- 您已获得安全访问代理的授权。
说明 在安全访问代理的详情页面,查看实例的授权情况。如果您还没有获得授权,请参见申请安全访问代理授权。
访问示例
您可以通过命令行、数据库管理工具、程序代码来访问已开启安全访问代理的目标实例。
- 使用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。