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