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

Data Management:MySQL プロトコル経由でのインスタンスへのアクセス

最終更新日:Jun 21, 2026

本トピックでは、セキュアアクセスプロキシを有効化した後、MySQL プロトコル経由でターゲットインスタンスに接続する方法について説明します。

前提条件

使用上の注意

セキュリティコラボレーションモードのインスタンスでは、セキュアアクセスプロキシを介した接続はセキュリティルールの対象となります。これらのルールは、クエリが返すことができる行数を制限し、設定可能な最大値は 100,000 です。

クエリごとに返される最大行数の設定

DMS コンソールで、Security and Specifications > Security Rules > Secure Access Proxy の順に移動して、クエリごとに返される最大行数を設定します。

ルールリストで、[Maximum number of rows returned per query] ルールを見つけます。現在の値は 5000 です。この値は必要に応じて変更できます。

説明
  • セキュリティルールをバイパスするには、データベースコンソールで提供されているエンドポイントを使用してデータベースに接続するか、DMS のテクニカルサポートに連絡してユースケースを評価してもらいます。

  • セキュリティコラボレーションモードではないインスタンスの場合、クエリごとに返される最大行数をカスタマイズすることはできません。デフォルトの制限は 3,000 行です。

制限事項

  • MySQL クライアントのアイドルタイムアウトは 900 秒を超えることはできません。

  • 接続プールを使用する場合、キープアライブ間隔は 900 秒を超えることはできません。

説明

接続プールを使用し、キープアライブ間隔を 750 秒に設定することを推奨します。

接続例

セキュアアクセスプロキシが有効になっているターゲットインスタンスには、MySQL CLI、 SQL クライアント、またはプログラムコードを使用して接続できます。

MySQL CLI の使用

次の形式を使用します:

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

パラメーター:

パラメーター

説明

host

ターゲットインスタンスのプロキシエンドポイントです。これは、「セキュアアクセスプロキシ」ページで、内部またはパブリックプロキシエンドポイントの MySQL プロトコルアドレスとして表示されています。

port

ターゲットインスタンスのポート (例: 3306) です。このポートは、「セキュアアクセスプロキシ」ページに表示される MySQL プロトコルアドレスの一部です。

user_name

ご自身の AccessKey ID です。 DMS は承認後にこの ID を割り当てます。「セキュアアクセスプロキシ」ページの許可されたユーザーリストで確認できます。

password

ご自身の AccessKey Secret です。 DMS は承認後にこのシークレットを割り当てます。「セキュアアクセスプロキシ」ページの許可されたユーザーリストで確認できます。

database

ターゲットインスタンス内のデータベースの名前です。

sql_statements

実行する SQL コマンド (例: SHOW DATABASES) です。

例:

mysql -hdpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com -P3306 -uYOUR_ACCESS_KEY_ID -pYOUR_ACCESS_KEY_SECRET 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();
// AccessKey ID を使用します。「セキュアアクセスプロキシ」ページの許可されたユーザーリストで確認できます。
properties.setProperty("user", "YOUR_ACCESS_KEY_ID");
// AccessKey Secret を使用します。「セキュアアクセスプロキシ」ページの許可されたユーザーリストで確認できます。
properties.setProperty("password", "YOUR_ACCESS_KEY_SECRET");
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: AccessKey ID。「セキュアアクセスプロキシ」ページの許可されたユーザーリストで確認できます。
    # password: AccessKey Secret。「セキュアアクセスプロキシ」ページの許可されたユーザーリストで確認できます。
    # database: ターゲットインスタンス内のデータベースの名前
    conn = pymysql.connect(host='dpxxxx-xxxxxxxx.proxy.dms.aliyuncs.com', port=3306, user='YOUR_ACCESS_KEY_ID', password="YOUR_ACCESS_KEY_SECRET",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: AccessKey ID。「セキュアアクセスプロキシ」ページの許可されたユーザーリストで確認できます。
    user     : 'YOUR_ACCESS_KEY_ID', 
    // password: AccessKey Secret。「セキュアアクセスプロキシ」ページの許可されたユーザーリストで確認できます。
    password : 'YOUR_ACCESS_KEY_SECRET', 
    // 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();

SQL クライアントの使用

この例では Navicat を使用します。次のフィールドを設定してください:

  • Host : ターゲットインスタンスのプロキシエンドポイント

  • Port : ターゲットインスタンスのポート

  • User name : ご自身の AccessKey ID

  • Password : ご自身の AccessKey Secret