

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creazione di utenti del database per AWS DMS Fleet Advisor
<a name="fa-database-users"></a>

**Importante**  
Avviso di fine del supporto: il 20 maggio 2026, AWS terminerà il supporto per AWS Database Migration Service Fleet Advisor. Dopo il 20 maggio 2026, non sarà più possibile accedere alla console di Fleet Advisor o alle risorse di AWS DMS AWS DMS Fleet Advisor. Per ulteriori informazioni, consulta [AWS DMS Fine del supporto di Fleet Advisor](https://docs.aws.amazon.com/dms/latest/userguide/dms_fleet.advisor-end-of-support.html).

In questa sezione viene descritto come creare gli utenti per i database di origine con le autorizzazioni minime richieste per il raccoglitore di dati DMS.

**Topics**
+ [Utilizzo di un utente del database con AWS DMS Fleet Advisor](#fa-database-users-using)
+ [Creazione di un utente di database con MySQL](#fa-database-users-mysql)
+ [Creazione di un utente di database con Oracle](#fa-database-users-oracle)
+ [Creazione di un utente di database con PostgreSQL](#fa-database-users-postgresql)
+ [Creazione di un utente di database con Microsoft SQL Server](#fa-database-users-sql-server)
+ [Eliminazione degli utenti di database](#fa-database-users-drop)

## Utilizzo di un utente del database con AWS DMS Fleet Advisor
<a name="fa-database-users-using"></a>

È possibile utilizzare un utente del database diverso da `root` con il raccoglitore di dati DMS. Specifica il nome utente e la password dopo aver aggiunto il database all'inventario, ma prima di eseguire il raccoglitore di dati. Per ulteriori informazioni sull'aggiunta dei database all'inventario, consulta [Gestione degli oggetti monitorati in AWS DMS](fa-managing-objects.md). 

Quando hai terminato di utilizzare il raccoglitore di dati DMS, puoi eliminare gli utenti di database che hai creato. Per ulteriori informazioni, consulta [Eliminazione degli utenti di database](#fa-database-users-drop).

**Importante**  
Negli esempi seguenti, sostituiscilo *\$1your\$1user\$1name\$1* con il nome dell'utente del database che hai creato per il database. Quindi, *\$1your\$1password\$1* sostituiscilo con una password sicura.

## Creazione di un utente di database con MySQL
<a name="fa-database-users-mysql"></a>

Per creare un utente di database in un database di origine MySQL, utilizza lo script seguente. Assicurati di conservare una versione dell'istruzione `GRANT` che dipenda dalla versione del database 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;
```

## Creazione di un utente di database con Oracle
<a name="fa-database-users-oracle"></a>

Per creare un utente di database in un database di origine Oracle, utilizza lo script seguente.

Per eseguire questo script SQL, connettiti al database Oracle utilizzando i privilegi `SYSDBA`. Dopo aver eseguito lo script SQL, connettiti al database utilizzando le credenziali dell'utente che hai creato con questo script. Usa le credenziali di questo utente anche per eseguire il raccoglitore di dati DMS.

Lo script seguente aggiunge il prefisso `C##` al nome dell'utente per i database container (CDB) multi-tenant 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;
```

## Creazione di un utente di database con PostgreSQL
<a name="fa-database-users-postgresql"></a>

Per creare un utente di database in un database di origine PostgreSQL, utilizza lo script seguente.

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

## Creazione di un utente di database con Microsoft SQL Server
<a name="fa-database-users-sql-server"></a>

Per creare un utente di database in un database di origine Microsoft SQL Server, utilizza lo script seguente.

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

## Eliminazione degli utenti di database
<a name="fa-database-users-drop"></a>

Dopo aver completato tutte le attività di raccolta dati, puoi eliminare gli utenti di database che hai creato per il raccoglitore di dati DMS. È possibile utilizzare i seguenti script per eliminare gli utenti con le autorizzazioni minime dai database.

Per eliminare l'utente dal database MySQL, esegui lo script seguente.

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

Per eliminare l'utente dal database Oracle, esegui lo script seguente.

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

Per eliminare l'utente dal database PostgreSQL, esegui lo script seguente.

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

Per eliminare l'utente dal database SQL Server, esegui lo script seguente.

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