

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Création d'utilisateurs de base de données pour AWS DMS Fleet Advisor
<a name="fa-database-users"></a>

**Important**  
Avis de fin de support : le 20 mai 2026, le support de AWS Database Migration Service Fleet Advisor AWS prendra fin. Après le 20 mai 2026, vous ne pourrez plus accéder à la console AWS DMS Fleet Advisor ni aux ressources de AWS DMS Fleet Advisor. Pour plus d'informations, consultez la section [Fin du support de AWS DMS Fleet Advisor](https://docs.aws.amazon.com/dms/latest/userguide/dms_fleet.advisor-end-of-support.html).

Cette section décrit la manière de créer des utilisateurs pour vos bases de données sources avec les autorisations minimales requises pour le collecteur de données DMS.

**Topics**
+ [Utilisation d'un utilisateur de base de données avec AWS DMS Fleet Advisor](#fa-database-users-using)
+ [Création d’un utilisateur de base de données avec MySQL](#fa-database-users-mysql)
+ [Création d’un utilisateur de base de données avec Oracle](#fa-database-users-oracle)
+ [Création d’un utilisateur de base de données avec PostgreSQL](#fa-database-users-postgresql)
+ [Création d’un utilisateur de base de données avec Microsoft SQL Server](#fa-database-users-sql-server)
+ [Suppression d’utilisateurs de base de données](#fa-database-users-drop)

## Utilisation d'un utilisateur de base de données avec AWS DMS Fleet Advisor
<a name="fa-database-users-using"></a>

Vous pouvez utiliser un utilisateur de base de données autre que `root` avec le collecteur de données DMS. Spécifiez le nom d’utilisateur et le mot de passe après avoir ajouté la base de données à l’inventaire, mais avant d’exécuter votre collecteur de données. Pour plus d’informations sur l’ajout de bases de données à l’inventaire, consultez [Gestion des objets surveillés dans AWS DMS](fa-managing-objects.md). 

Une fois que vous avez fini d’utiliser le collecteur de données DMS, vous pouvez supprimer les utilisateurs de base de données que vous avez créés. Pour de plus amples informations, veuillez consulter [Suppression d’utilisateurs de base de données](#fa-database-users-drop).

**Important**  
Dans les exemples suivants, remplacez par le nom *\$1your\$1user\$1name\$1* de l'utilisateur de base de données que vous avez créé pour votre base de données. Remplacez-le ensuite *\$1your\$1password\$1* par un mot de passe sécurisé.

## Création d’un utilisateur de base de données avec MySQL
<a name="fa-database-users-mysql"></a>

Pour créer un utilisateur de base de données dans une base de données source MySQL, utilisez le script suivant. Assurez-vous de conserver une seule version de l’instruction `GRANT` qui dépend de la version de la base de données MySQL.

```
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;
```

## Création d’un utilisateur de base de données avec Oracle
<a name="fa-database-users-oracle"></a>

Pour créer un utilisateur de base de données dans une base de données source Oracle, utilisez le script suivant.

Pour exécuter ce script SQL, connectez-vous à la base de données Oracle à l’aide de privilèges `SYSDBA`. Après avoir exécuté ce script SQL, connectez-vous à la base de données à l’aide des informations d’identification de l’utilisateur que vous avez créé avec ce script. Utilisez également les informations d’identification de cet utilisateur pour exécuter le collecteur de données DMS.

Le script suivant ajoute le préfixe `C##` au nom de l’utilisateur pour les bases de données de conteneurs (CDB) multilocataires Oracle.

```
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;
```

## Création d’un utilisateur de base de données avec PostgreSQL
<a name="fa-database-users-postgresql"></a>

Pour créer un utilisateur de base de données dans une base de données source PostgreSQL, utilisez le script suivant.

```
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}";
```

## Création d’un utilisateur de base de données avec Microsoft SQL Server
<a name="fa-database-users-sql-server"></a>

Pour créer un utilisateur de base de données dans une base de données source Microsoft SQL Server, utilisez le script suivant.

```
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}]
```

## Suppression d’utilisateurs de base de données
<a name="fa-database-users-drop"></a>

Une fois toutes les tâches de collecte de données terminées, vous pouvez supprimer les utilisateurs de base de données que vous avez créés pour le collecteur de données DMS. Vous pouvez utiliser les scripts suivants pour supprimer de vos bases de données les utilisateurs dotés d’autorisations minimales.

Pour supprimer l’utilisateur de la base de données MySQL, exécutez le script suivant.

```
DROP USER IF EXISTS "{your_user_name}";
```

Pour supprimer l’utilisateur de la base de données Oracle, exécutez le script suivant.

```
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;
```

Pour supprimer l’utilisateur de la base de données PostgreSQL, exécutez le script suivant.

```
DROP USER IF EXISTS "{your_user_name}";
```

Pour supprimer l’utilisateur de la base de données SQL Server, exécutez le script suivant.

```
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
```