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

ApsaraDB RDS:アカウントへのテーブル、ビュー、およびフィールドの管理権限の付与

最終更新日:Jan 14, 2025

このトピックでは、SQLステートメントを実行して、ApsaraDB RDS for MySQLインスタンスのデータベースのテーブル、ビュー、またはフィールドを管理する権限をアカウントに付与する方法について説明します。 Alibaba Cloudアカウントを使用している場合、RDSインスタンスのすべてのタイプのデータを管理する権限があります。

前提条件

特権アカウントが作成されます。 詳細については、「アカウントの作成」をご参照ください。

手順

  1. クライアントまたはCLIを使用してRDSインスタンスに接続します。 詳細については、「クライアントまたはCLIを使用したApsaraDB RDS For MySQLインスタンスへの接続」をご参照ください。

  2. SQL文を実行してアカウントを作成し、そのアカウントにデータベース内のテーブル、ビュー、およびフィールドを管理する権限を付与します。

    説明

    作成されたアカウントには、ApsaraDB RDSコンソールで承認済みデータベースを表示する権限がありません。

    • アカウントを作成し、そのアカウントにデータベース内のテーブルを管理する権限を付与します。

      CREATE USER `<Username of the account>`@`%`IDENTIFIED BY '<Password of the account>';
      GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '<Username of the account>'@'%';
      GRANT ALL PRIVILEGES ON `<Database name>`.`<Table name>`  TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`help_topic` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`func` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`time_zone` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`slow_log` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`time_zone_transition` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`proc` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`help_category` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`help_relation` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`help_keyword` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`general_log` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`time_zone_leap_second` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`time_zone_transition_type` TO '<Username of the account>'@'%';
      GRANT SELECT ON `mysql`.`time_zone_name` TO '<Username of the created account>'@'%';

      • テーブルを管理するためのアカウントを承認する: test01という名前のアカウントを作成し、rds001データベースのtest100テーブルを管理するためのアカウントを承認します。

        CREATE USER `test01`@`%`IDENTIFIED BY 'passwd';
        GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test01'@'%';
        GRANT ALL PRIVILEGES ON `rds001`.`test100`  TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`help_topic` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`func` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`time_zone` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`slow_log` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`time_zone_transition` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`proc` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`help_category` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`help_relation` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`help_keyword` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`general_log` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`time_zone_leap_second` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`time_zone_transition_type` TO 'test01'@'%';
        GRANT SELECT ON `mysql`.`time_zone_name` TO 'test01'@'%';
        説明

        コードの3行目のtest100をアスタリスク (*) に変更した場合、test01アカウントにApsaraDB RDSコンソールで承認済みデータベースを表示する権限を付与します。

      • アカウントに複数のテーブルを管理する権限を付与する: test02という名前のアカウントを作成し、そのアカウントにrds001データベースのtest100、test200、およびtest300テーブルを管理する権限を付与します。

        CREATE USER `test02`@`%`IDENTIFIED BY 'passwd';
        GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test02'@'%';
        GRANT ALL PRIVILEGES ON `rds001`.`test100`  TO 'test02'@'%';
        GRANT ALL PRIVILEGES ON `rds001`.`test200`  TO 'test02'@'%';
        GRANT ALL PRIVILEGES ON `rds001`.`test300`  TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`help_topic` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`func` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`time_zone` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`slow_log` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`time_zone_transition` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`proc` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`help_category` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`help_relation` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`help_keyword` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`general_log` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`time_zone_leap_second` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`time_zone_transition_type` TO 'test02'@'%';
        GRANT SELECT ON `mysql`.`time_zone_name` TO 'test02'@'%';
    • 作成したアカウントに、データベースからビューを照会する権限を付与します。

      GRANT SELECT ON <Database name>.<View name> to <Username of the account>;

      • テーブルを管理するためのアカウントの権限付与: test01アカウントにrds001データベースからview_test1ビューを照会する権限を付与します。

        GRANT SELECT ON rds001.view_test1 to test01;
      • アカウントに複数のテーブルを管理する権限を付与する: test01アカウントにrds001データベースからview_test1およびview_test2ビューを照会する権限を付与します。

        GRANT SELECT ON rds001.view_test1 to test01;
        GRANT SELECT ON rds001.view_test2 to test01;
    • 作成したアカウントに、データベースのテーブルのフィールドを更新または照会する権限を付与します。

      GRANT UPDATE (<Field name>) ON TABLE <Table name> to <Username of the account>;     -----Authorize the account to update fields in a table.
      GRANT SELECT (<Field name>) ON TABLE <Table name> to <Username of the account>;     -----Authorize the account to query fields in a table.

      • テーブルを管理するためのアカウントの権限を付与: test01アカウントに、testtableテーブルのtestidフィールドを更新する権限を付与します。

        GRANT UPDATE (testid) ON TABLE testtable to test01;
      • アカウントに複数のテーブルを管理する権限を付与: test01アカウントに、testtableテーブルのtest_idフィールドとtest_nameフィールドを更新する権限を付与します。

        GRANT UPDATE (test_id) ON TABLE testtable to test01;
        GRANT UPDATE (test_name) ON TABLE testtable to test01;

    データ管理 (DMS) でSQL文を実行することもできます。 詳細については、「MySQLデータベースのユーザー権限の管理」をご参照ください。