Datenbankbenutzer für AWS DMS Fleet Advisor erstellen - AWS Database Migration Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Datenbankbenutzer für AWS DMS Fleet Advisor erstellen

In diesem Abschnitt wird beschrieben, wie Sie Benutzer für Ihre Quelldatenbanken mit den für den DMS Datensammelpunkt erforderlichen Mindestberechtigungen erstellen.

Verwenden eines Datenbankbenutzers mit AWS DMS Fleet Advisor

Sie können einen anderen Datenbankbenutzer als root den DMS Datensammelpunkt verwenden. Geben Sie den Benutzernamen und das Passwort an, nachdem Sie die Datenbank zum Inventar hinzugefügt haben, jedoch bevor Sie Ihren Datenkollektor ausführen. Weitere Informationen zum Hinzufügen von Datenbanken zum Inventar finden Sie unter Verwaltung überwachter Objekte in AWS DMS.

Wenn Sie den DMS Datensammelpunkt nicht mehr verwenden, können Sie die Datenbankbenutzer löschen, die Sie erstellt haben. Weitere Informationen finden Sie unter Löschen von Datenbankbenutzern.

Wichtig

Ersetzen Sie in den folgenden Beispielen {your_user_name} durch den Namen des Datenbankbenutzers, den Sie für Ihre Datenbank erstellt haben. Ersetzen Sie dann {your_password} mit einem sicheren Passwort.

Einen Datenbankbenutzer mit My erstellen SQL

Verwenden Sie das folgende Skript, um einen Datenbankbenutzer in einer Datenbank vom Typ Meine SQL Quelle zu erstellen. Stellen Sie sicher, dass Sie eine Version der GRANT Anweisung behalten, die von der Version Ihrer SQL Datenbank Meine Datenbank abhängt.

CREATE USER {your_user_name} identified BY '{your_password}'; GRANT PROCESS ON *.* TO {your_user_name}; GRANT REFERENCES ON *.* TO {your_user_name}; GRANT TRIGGER ON *.* TO {your_user_name}; GRANT EXECUTE ON *.* TO {your_user_name}; # For MySQL versions lower than 8.0, use the following statement. GRANT SELECT, CREATE TEMPORARY TABLES ON `temp`.* TO {your_user_name}; # For MySQL versions 8.0 and higher, use the following statement. GRANT SELECT, CREATE TEMPORARY TABLES ON `mysql`.* TO {your_user_name}; GRANT SELECT ON performance_schema.* TO {your_user_name}; SELECT IF(round(Value1 + Value2 / 100 + Value3 / 10000, 4) > 5.0129, 'GRANT EVENT ON *.* TO {your_user_name};', 'SELECT ''Events are not applicable'';') sql_statement INTO @stringStatement FROM ( SELECT substring_index(ver, '.', 1) value1, substring_index(substring_index(ver, '.', 2), '.', - 1) value2, substring_index(ver, '.', - 1) value3 FROM ( SELECT IF((@@version regexp '[^0-9\.]+') != 0, @@innodb_version, @@version) AS ver FROM dual ) vercase ) v; PREPARE sqlStatement FROM @stringStatement; SET @stringStatement := NULL; EXECUTE sqlStatement; DEALLOCATE PREPARE sqlStatement;

Erstellen einer VPC zur Verwendung mit Oracle

Verwenden Sie das folgende Skript, um einen Datenbankbenutzer in einer Oracle-Quelldatenbank zu erstellen.

Um dieses SQL Skript auszuführen, stellen Sie mithilfe von SYSDBA Rechten eine Verbindung zu Ihrer Oracle-Datenbank her. Nachdem Sie dieses SQL Skript ausgeführt haben, stellen Sie mit den Anmeldeinformationen des Benutzers, den Sie mit diesem Skript erstellt haben, eine Verbindung zu Ihrer Datenbank her. Verwenden Sie außerdem die Anmeldeinformationen dieses Benutzers, um den DMS Datensammelpunkt auszuführen.

Das folgende Skript fügt das C## Präfix dem Namen des Benutzers für Oracle-Container-Datenbanken mit mehreren Mandanten hinzu (CDB).

CREATE USER {your_user_name} IDENTIFIED BY "{your_password}"; GRANT CREATE SESSION TO {your_user_name}; GRANT SELECT ANY DICTIONARY TO {your_user_name}; GRANT SELECT ON DBA_WM_SYS_PRIVS TO {your_user_name}; BEGIN DBMS_NETWORK_ACL_ADMIN.CREATE_ACL( acl => UPPER('{your_user_name}') || '_Connect_Access.xml', description => 'Connect Network', principal => UPPER('{your_user_name}'), is_grant => TRUE, privilege => 'resolve', start_date => NULL, end_date => NULL); DBMS_NETWORK_ACL_ADMIN.ASSIGN_ACL( acl => UPPER('{your_user_name}') || '_Connect_Access.xml', host => '*', lower_port => NULL, upper_port => NULL); END;

Einen Datenbankbenutzer mit Postgre erstellen SQL

Verwenden Sie das folgende Skript, um einen Datenbankbenutzer in einer SQL Postgre-Quelldatenbank zu erstellen.

CREATE USER "{your_user_name}" WITH LOGIN PASSWORD '{your_password}'; GRANT pg_read_all_settings TO "{your_user_name}"; -- For PostgreSQL versions 10 and higher, add the following statement. GRANT EXECUTE ON FUNCTION pg_ls_waldir() TO "{your_user_name}";

Einen Datenbankbenutzer mit Microsoft SQL Server erstellen

Verwenden Sie das folgende Skript, um einen Datenbankbenutzer in einer Microsoft SQL Server-Quelldatenbank zu erstellen.

USE master GO IF NOT EXISTS (SELECT * FROM sys.sql_logins WHERE name = N'{your_user_name}') CREATE LOGIN [{your_user_name}] WITH PASSWORD=N'{your_password}', DEFAULT_DATABASE=[master], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF GO GRANT VIEW SERVER STATE TO [{your_user_name}] GRANT VIEW ANY DEFINITION TO [{your_user_name}] GRANT VIEW ANY DATABASE TO [{your_user_name}] IF LEFT(CONVERT(SYSNAME,SERVERPROPERTY('ProductVersion')), CHARINDEX('.', CONVERT(SYSNAME,SERVERPROPERTY('ProductVersion')), 0)-1) >= 12 EXECUTE('GRANT CONNECT ANY DATABASE TO [{your_user_name}]') DECLARE @dbname VARCHAR(100) DECLARE @statement NVARCHAR(max) DECLARE db_cursor CURSOR LOCAL FAST_FORWARD FOR SELECT name FROM MASTER.sys.databases WHERE state = 0 AND is_read_only = 0 OPEN db_cursor FETCH NEXT FROM db_cursor INTO @dbname WHILE @@FETCH_STATUS = 0 BEGIN SELECT @statement = 'USE '+ quotename(@dbname) +';'+ ' IF NOT EXISTS (SELECT * FROM sys.syslogins WHERE name = ''{your_user_name}'') OR NOT EXISTS (SELECT * FROM sys.sysusers WHERE name = ''{your_user_name}'') CREATE USER [{your_user_name}] FOR LOGIN [{your_user_name}]; EXECUTE sp_addrolemember N''db_datareader'', [{your_user_name}]' BEGIN TRY EXECUTE sp_executesql @statement END TRY BEGIN CATCH DECLARE @err NVARCHAR(255) SET @err = error_message() PRINT @dbname PRINT @err END CATCH FETCH NEXT FROM db_cursor INTO @dbname END CLOSE db_cursor DEALLOCATE db_cursor USE msdb GO GRANT EXECUTE ON dbo.agent_datetime TO [{your_user_name}]

Löschen von Datenbankbenutzern

Nachdem Sie alle Datenerfassungsaufgaben abgeschlossen haben, können Sie die Datenbankbenutzer löschen, die Sie für den DMS Datensammelpunkt erstellt haben. Sie können die folgenden Skripts verwenden, um die Benutzer mit Mindestberechtigungen aus Ihren Datenbanken zu löschen.

Führen Sie das folgende Skript aus, um den Benutzer aus Ihrer SQL Datenbank Meine Datenbank zu löschen.

DROP USER IF EXISTS "{your_user_name}";

Führen Sie das folgende Skript aus, um den Benutzer aus Ihrer Oracle-Datenbank zu löschen.

DECLARE -- Input parameters, please set correct value cnst$user_name CONSTANT VARCHAR2(255) DEFAULT '{your_user_name}'; -- System variables, please, don't change var$is_exists INTEGER DEFAULT 0; BEGIN SELECT COUNT(hal.acl) INTO var$is_exists FROM dba_host_acls hal WHERE hal.acl LIKE '%' || UPPER(cnst$user_name) || '_Connect_Access.xml'; IF var$is_exists > 0 THEN DBMS_NETWORK_ACL_ADMIN.DROP_ACL( acl => UPPER(cnst$user_name) || '_Connect_Access.xml'); END IF; SELECT COUNT(usr.username) INTO var$is_exists FROM all_users usr WHERE usr.username = UPPER(cnst$user_name); IF var$is_exists > 0 THEN EXECUTE IMMEDIATE 'DROP USER ' || cnst$user_name || ' CASCADE'; END IF; END;

Führen Sie das folgende Skript aus, um den Benutzer aus Ihrer SQL Postgre-Datenbank zu löschen.

DROP USER IF EXISTS "{your_user_name}";

Führen Sie das folgende Skript aus, um den Benutzer aus Ihrer SQL Server-Datenbank zu löschen.

USE msdb GO REVOKE EXECUTE ON dbo.agent_datetime TO [{your_user_name}] USE master GO DECLARE @dbname VARCHAR(100) DECLARE @statement NVARCHAR(max) DECLARE db_cursor CURSOR LOCAL FAST_FORWARD FOR SELECT name FROM MASTER.sys.databases WHERE state = 0 AND is_read_only = 0 OPEN db_cursor FETCH NEXT FROM db_cursor INTO @dbname WHILE @@FETCH_STATUS = 0 BEGIN SELECT @statement = 'USE '+ quotename(@dbname) +';'+ ' EXECUTE sp_droprolemember N''db_datareader'', [{your_user_name}] IF EXISTS (SELECT * FROM sys.syslogins WHERE name = ''{your_user_name}'') OR EXISTS (SELECT * FROM sys.sysusers WHERE name = ''{your_user_name}'') DROP USER [{your_user_name}];' BEGIN TRY EXECUTE sp_executesql @statement END TRY BEGIN CATCH DECLARE @err NVARCHAR(255) SET @err = error_message() PRINT @dbname PRINT @err END CATCH FETCH NEXT FROM db_cursor INTO @dbname END CLOSE db_cursor DEALLOCATE db_cursor GO IF EXISTS (SELECT * FROM sys.sql_logins WHERE name = N'{your_user_name}') DROP LOGIN [{your_user_name}] -- Use for SQL login GO