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

  • 程序调用的示例

    //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