Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Creación de usuarios de bases de datos para AWS DMS Fleet Advisor
En esta sección se describe cómo crear usuarios para las bases de datos de origen con los permisos mínimos necesarios para el recopilador de DMS datos.
Esta sección contiene los siguientes temas:
- Uso de un usuario de base de datos con AWS DMS Fleet Advisor
- Crear un usuario de base de datos con My SQL
- Creación de un usuario de base de datos con Oracle
- Crear un usuario de base de datos con Postgre SQL
- Creación de un usuario de base de datos con Microsoft SQL Server
- Eliminación de usuarios de base de datos
Uso de un usuario de base de datos con AWS DMS Fleet Advisor
Puede utilizar un usuario de base de datos que no sea root
el del recopilador DMS de datos. Especifique el nombre de usuario y la contraseña después de agregar la base de datos al inventario, pero antes de ejecutar el recopilador de datos. Para obtener más información acerca de cómo agregar bases de datos al inventario, consulte Administrar los objetos monitoreados en AWS DMS.
Cuando termine de usar el recopilador de DMS datos, puede eliminar los usuarios de la base de datos que creó. Para obtener más información, consulte Eliminación de usuarios de base de datos.
importante
En los ejemplos siguientes, sustituya {your_user_name}
por el nombre del usuario de la base de datos que creó para la base de datos. A continuación, sustituya {your_password}
con una contraseña segura.
Crear un usuario de base de datos con My SQL
Para crear un usuario de base de datos en una base de datos de mi SQL origen, utilice el siguiente script. Asegúrese de conservar una versión de la GRANT
declaración que depende de la versión de su SQL base de datos My.
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;
Creación de un usuario de base de datos con Oracle
Para crear un usuario de base de datos en una base de datos de origen de Oracle, utilice el siguiente script.
Para ejecutar este SQL script, conéctese a su base de datos de Oracle utilizando SYSDBA
los privilegios. Tras ejecutar este SQL script, conéctese a la base de datos con las credenciales del usuario que creó con este script. Además, utilice las credenciales de este usuario para ejecutar el recopilador DMS de datos.
El siguiente script agrega el C##
prefijo al nombre del usuario para las bases de datos de contenedores multiusuario de Oracle ()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;
Crear un usuario de base de datos con Postgre SQL
Para crear un usuario de base de datos en una base de datos SQL fuente de Postgre, utilice el siguiente script.
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}
";
Creación de un usuario de base de datos con Microsoft SQL Server
Para crear un usuario de base de datos en una base de datos de origen de Microsoft SQL Server, utilice el siguiente script.
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}
]
Eliminación de usuarios de base de datos
Tras completar todas las tareas de recopilación de datos, puede eliminar los usuarios de la base de datos que creó para el recopilador de DMS datos. Puede usar los siguientes scripts para eliminar los usuarios con permisos mínimos de las bases de datos.
Para eliminar el usuario de su SQL base de datos My, ejecute el siguiente script.
DROP USER IF EXISTS "
{your_user_name}
";
Para eliminar el usuario de base de datos de Oracle, ejecute el siguiente script.
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;
Para eliminar el usuario de la SQL base de datos de Postgre, ejecute el siguiente script.
DROP USER IF EXISTS "
{your_user_name}
";
Para eliminar el usuario de la base de datos SQL del servidor, ejecute el siguiente script.
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