# MariaDB GRANT ALL PRIVILEGES: come assegnare i permessi

Il comando `GRANT ALL PRIVILEGES` in MariaDB consente di assegnare a un utente tutti i permessi su un database, permettendo operazioni senza restrizioni come la creazione, la modifica o l’eliminazione di tabelle.

## Che cos’è `GRANT ALL PRIVILEGES` in MariaDB?

Il comando `GRANT ALL PRIVILEGES` in [MariaDB](https://www.ionos.it/digitalguide/server/know-how/cose-mariadb/) consente di attribuire all’utente **tutti i privilegi disponibili** su uno o più database, tra cui le autorizzazioni alla creazione, la modifica e l’eliminazione di tabelle e l’accesso alle funzioni amministrative. Con l’uso mirato di `GRANT ALL PRIVILEGES` è possibile controllare i permessi di accesso all’interno dell’ambiente del database.

Per utilizzare `GRANT ALL PRIVILEGES` in MariaDB devi possedere **privilegi di sistema elevati**, come il privilegio `SUPER` o l’autorizzazione per assegnare permessi ad altri (`GRANT OPTION`). Accedi con un account amministrativo e assicurati di avere effettuato la connessione all’istanza corretta del database. Definisci con precisione il nome utente e il relativo host per evitare assegnazioni errate. Verifica inoltre che il database di destinazione esista già, poiché il comando si applica solo a database esistenti.

## Sintassi del comando `GRANT ALL PRIVILEGES` in MariaDB

La sintassi di base per assegnare tutti i privilegi su un database in MariaDB è la seguente:

```sql
GRANT ALL PRIVILEGES ON database.* TO 'username'@'host';
```

Il comando assegna tutti i permessi all’utente indicato sul database specificato. Con `'username'@host` stabilisci a quale utente e da quale host è consentito l’accesso. È possibile anche definire una password contestualmente, per autenticare l’utente.

Dopo l’esecuzione del comando, per rendere effettive le modifiche è necessario aggiornare i privilegi con:

```sql
FLUSH PRIVILEGES;
```

Questo garantisce che i privilegi assegnati siano immediatamente attivi e correttamente salvati nel sistema.

## Tutorial: creare un utente e assegnare i permessi

Per creare un nuovo utente in MariaDB e assegnare a esso tutti i permessi, segui questi passaggi:

### Primo passaggio: creare un nuovo utente

Per prima cosa, crea un nuovo utente con una password sicura. A tal fine, utilizza il seguente comando:

```sql
CREATE USER 'newuser'@localhost IDENTIFIED BY 'strongpassword';
```

Con il [comando CREATE USER di MariaDB](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/mariadb-create-user/) definisci un nuovo account e associ una password. Sostituisci `newuser` con il nome utente desiderato e `strongpassword` con una password univoca e sicura. Il comando `localhost` limita l’accesso al server locale. Se vuoi consentire l’accesso da remoto, inserisci l’**indirizzo IP o il nome host** del server desiderato.

### Secondo passaggio: assegnare tutti i permessi su un database

Il comando `GRANT ALL PRIVILEGES` in MariaDB assegna all’utente tutti i privilegi disponibili sul database `database_name`. Il segnaposto `*` indica tutte le tabelle all’interno del database specificato.

```sql
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@localhost;
```

### Terzo passaggio: consentire la trasmissione dei privilegi (`GRANT OPTION`)

Con l’aggiunta di `WITH GRANT OPTION`, l’utente ottiene il permesso per trasferire i privilegi ricevuti ad altri utenti.

```sql
GRANT ALL PRIVILEGES ON database_name.* TO 'newuser'@localhost WITH GRANT OPTION;
```

### Quarto passaggio: assegnare permessi specifici su database o tabelle

È possibile anche assegnare singoli permessi su un database o una tabella. Ad esempio, per consentire solo la lettura dei dati, utilizza il seguente comando:

```sql
GRANT SELECT ON database_name.* TO 'newuser'@localhost;
```

In questo esempio, `'newuser'` ottiene il permesso di leggere tutti i dati nel database `database_name`, ma non di apportare modifiche. Utilizzando `*` dopo il nome del database, i permessi si riferiscono a tutte le tabelle di quel database.

Per concedere l’accesso a una singola tabella, il comando diventa:

```sql
GRANT SELECT ON database_name.table_name TO 'newuser'@localhost;
```

In questo modo, `'newuser'` può leggere solo dalla tabella `table_name` contenuta all’interno del database `database_name`. Ciò consente di controllare con estrema precisione le azioni che l’utente è autorizzato a eseguire.

### Quinto passaggio: applicare le modifiche

I privilegi vengono in genere applicati immediatamente. In caso contrario, è possibile eseguire il comando seguente per rendere effettivi tutti i permessi assegnati:

```sql
FLUSH PRIVILEGES;
```

### Sesto passaggio: visualizzare i privilegi assegnati

Per verificare tutti i permessi attualmente assegnati a un account utente, inserisci il seguente comando:

```sql
SHOW GRANTS FOR 'newuser'@localhost;
```

Questo comando elenca tutte le autorizzazioni di cui dispone `newuser` per l’istanza MariaDB. Non vengono visualizzati solo i permessi generali su database o tabelle, ma anche privilegi speciali come la possibilità di trasferire i propri privilegi (`WITH GRANT OPTION`).


This is a markdown version of: [https://www.ionos.it/digitalguide/hosting/tecniche-hosting/mariadb-grant-all-privileges/](https://www.ionos.it/digitalguide/hosting/tecniche-hosting/mariadb-grant-all-privileges/) for AI/LLM consumption.