すべてのプロダクト
Search
ドキュメントセンター

Data Management:MySQLプロトコルを介したデータベースインスタンスへのアクセス

最終更新日:Aug 19, 2024

このトピックでは、データベースインスタンスに対してセキュアアクセスプロキシ機能を有効にした後、MySQLプロトコルを使用してデータベースインスタンスにアクセスする方法について説明します。

前提条件

使用上の注意

データベースインスタンスがSecurity Collaborationモードで管理されている場合、セキュリティルールの影響を受けます。 クエリごとに最大100,000行を返すことができます。

クエリごとに返される行の最大数を設定します。

データ管理 (DMS) コンソールにログインします。 上部のナビゲーションバーで、[セキュリティと仕様] > [セキュリティルール] を選択します。 MySQLエンジンタイプを見つけ、[操作] 列の [編集] をクリックします。 左側のナビゲーションウィンドウで、[セキュリティと仕様]> [Secure Access Proxy] を選択します。 次に、クエリごとに返される行の最大数を変更します。

image

説明
  • データベースインスタンスがセキュリティルールの影響を受けないようにする場合は、データベースコンソールで提供される接続アドレスを使用してデータベースインスタンスにアクセスするか、DMSテクニカルサポートに連絡して特定のシナリオを評価してください。

  • データベースインスタンスがSecurity Collaborationモードで管理されていない場合、クエリごとに返される行の最大数をカスタマイズすることはできません。 デフォルトでは、各クエリに返される行の最大数は3000です。

制限事項

  • MySQLクライアントに設定されたアイドルタイムアウト期間は900秒を超えることはできません。

  • データベース接続プール機能を使用する場合、2つの連続した接続プールの障害検出の間隔は900秒を超えることはできません。

説明

データベース接続プール機能を使用し、間隔を750秒に設定することを推奨します。

コマンド、SQLクライアント、またはプログラムコードを使用して、セキュアなアクセスプロキシ機能が有効になっているデータベースインスタンスにアクセスできます。

MySQLコマンドの使用

構文:

mysql -h<host> -P<port> -u<user_name> -p<password> <database> -e '<sql_statements>'

下表に、各パラメーターを説明します。

パラメーター

説明

host

インスタンスのドメイン名。 インスタンスの [Secure access proxy] の詳細ページで、MySQLプロトコルを介してインスタンスにアクセスするために使用されるパブリックまたは内部プロキシエンドポイントでドメイン名を表示できます。

port

インスタンスのポート番号。 例: 3306。 インスタンスの [Secure access proxy] の詳細ページで、MySQLプロトコル経由でインスタンスにアクセスするために使用されるパブリックまたは内部プロキシエンドポイントのポート番号を表示できます。

user_name

承認後にDMSが割り当てたAccessKey ID。 AccessKey IDは、インスタンスの [Secure Access Proxy] 詳細ページの [権限付与情報] セクションで確認できます。

password

承認後にDMSが割り当てたAccessKey Secret。 AccessKey Secretは、インスタンスの [Secure Access Proxy] 詳細ページの [権限付与情報] セクションで確認できます。

削除

アクセスするデータベースインスタンスの名前。

sql_statements

実行するSQLステートメント。 例: SHOW DATABASES。

サンプルコード:

mysql -hdpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com -P3306 -uAccessID -pAccessSecret Schema -e 'SHOW DATABASES'

プログラムコードの使用

説明

この例では、Python 2が使用されています。

// dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com:3306: the domain name and port number used to connect to the instance. You can view the domain name and port number in the proxy endpoint used to access the instance over the MySQL protocol on the Secure Access Proxy details page of the instance. 
// schema: the name of the database instance that you want to access. 
String url = "jdbc:mysql://dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com:3306/schema";
Properties properties = new Properties();
// AccessID: the AccessKey ID used to access the instance. You can view your AccessKey ID in the Authorization Information section on the Secure Access Proxy details page of the instance. 
properties.setProperty("user", "AccessID");
// AccessSecret: the AccessKey secret used to access the instance. You can view your AccessKey secret in the Authorization Information section on the Secure Access Proxy details page of the instance. 
properties.setProperty("password", "AccessSecret");
try (Connection connection = DriverManager.getConnection(url, properties)) {
    try (Statement statement = connection.createStatement()) {
        // Use the execute() method to execute an SQL statement. In this example, the SHOW DATABASES statement is executed. You can also execute other SQL statements. 
        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: the domain name of the instance. 
    # port: the port number used to connect to the instance. 
    # user: the AccessKey ID used to access the instance. You can view your AccessKey secret in the Authorization Information section on the Secure Access Proxy details page of the instance. 
    # password: the AccessKey secret used to access the instance. You can view your AccessKey secret in the Authorization Information section on the Secure Access Proxy details page of the instance. 
    # database: the name of the database instance that you want to access. 
    conn = pymysql.connect(host='dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com', port=3306, user='AccessID', password="AccessSecret",database ='schema')  
    cur = conn.cursor(pymysql.cursors.DictCursor)
    # Use the execute() method to execute an SQL statement. In this example, the SHOW DATABASES statement is executed. You can also execute other SQL statements. 
    cur.execute('SHOW DATABASES')
    rs = cur.fetchall()
    print rs
finally:
    cur.close()
    conn.close()
var mysql  = require('mysql');  
 
var connection = mysql.createConnection({
    // host: the domain name of the instance.  
    host     : 'dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com',  
    // user: the AccessKey ID used to access the instance. You can view your AccessKey secret in the Authorization Information section on the Secure Access Proxy details page of the instance.      
    user     : 'AccessID', 
    // password: the AccessKey secret used to access the instance. You can view your AccessKey secret in the Authorization Information section on the Secure Access Proxy details page of the instance.              
    password : 'AccessSecret', 
    // port: the port number used to connect to the instance.       
    port     : '3306',  
    // database: the name of the database instance that you want to access.                  
    database : 'schema' 
}); 
 
connection.connect();

// Use the execute() method to execute an SQL statement. In this example, the SHOW DATABASES statement is executed. You can also execute other SQL statements.  
connection.query('SHOW DATABASES', function(err, result) {
    console.log(result);
});
 
connection.end();

SQLクライアントの使用

この例では、Navicatクライアントが使用されています。 次のパラメーターを設定します。

  • Host: インスタンスのドメイン名。

  • ポート: インスタンスへの接続に使用されるポート番号。

  • ユーザー名: インスタンスへのアクセスに使用されるAccessKey ID。

  • パスワード: インスタンスへのアクセスに使用されるAccessKeyシークレット。

navicat