Assegnare Ad Un Utente Permessi Di Amministrazione Su Un DataBase

Da ElettraWiki.
(Reindirizzamento da Utente Amministratore Di DataBase)

Diamo ad un utente il privilegio di amministrare il DB che abbiamo creato per lui
al prompt di shell digitiamo mysql -u root -p

# mysql -u root -p

il server risponderà chiedendovi la password dell'utente root di MySQL/MariaDB

Enter password:

una volta digitata la password il server SQL mostrerà il suo prompt rimanendo in attesa

Welcome to the MariaDB monitor. Commands end with ; or \g.

Your MariaDB connection id is 779
Server version: 10.5.9-MariaDB-1 Debian buildd-unstable

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

E' saggio verificare la presenza dell'utente che vogliamo promuovere ad amministratore di DB e la sua relazione attuale con il DB in oggetto
Verifichiamo l'esistenza del DB mio_user_db da far amministrare dall'utente mio_user

MariaDB [(none)]> SHOW DATABASES;

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mio_user_db        |
| mysql              |
| performance_schema |
+--------------------+
4 rows in set (0.108 sec)

MariaDB [(none)]>

Il server SQL ci mostra la presenza del DB mio_user_db (in caso contrario avremmo dovuto crearlo)
Procediamo quindi a verificare la presenza dell'utente

MariaDB [(none)]> SELECT User, Host FROM mysql.user;

+-------------+-----------+
| User        | Host      |
+-------------+-----------+
| mio_user    | %         |
| mariadb.sys | localhost |
| mysql       | localhost |
| root        | localhost |
+-------------+-----------+
4 rows in set (0.003 sec)

MariaDB [(none)]>

L'utente che ci interessa promuovere mio_user è presente (in caso contrario avremmo dovuto crearlo), verifichiamo adesso a quali DB esso è già legato e quali permessi possiede

MariaDB [(none)]> SHOW GRANTS FOR 'mio_user'@'%';

+---------------------------------------------------------------------------------------------------------+
| Grants for mio_user@%                                                                                   |
+---------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `mio_user`@`%` IDENTIFIED BY PASSWORD '*7C6CF6AE528FEEED1DA440E17EDFFF6DA934D32A' |
+---------------------------------------------------------------------------------------------------------+
1 row in set (0.000 sec)

MariaDB [(none)]>

Da questa query comprendiamo che sì l'utente non solo esiste ma che può accedere al server identificandosi con una password, ma esso non è legato a nessun DB esistente e ancor di più non ne può amministrare alcuno in alcun modo.
Agiamo quindi di conseguenza!
forniamo i permessi necessari ad mio_user affinché possa amministrare il db mio_user_db

MariaDB [(none)]> GRANT ALL ON mio_user_db.* TO 'mio_user'@'%';
MariaDB [(none)]>

Non è strettamente necessario, ma è buona norma, dopo una operazione di assegnazione dei privilegi, rinfrescare gli stessi con un FLUSH PRIVILEGES

MariaDB [(none)]> FLUSH PRIVILEGES;

MariaDB [(none)]>

Per verificare il buon esito delle operazioni appena svolte verifichiamo nuovamente i permessi di mio_user

MariaDB [(none)]> SHOW GRANTS FOR 'mio_user'@'%';

+---------------------------------------------------------------------------------------------------------+
| Grants for mio_user@%                                                                                   |
+---------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `mio_user`@`%` IDENTIFIED BY PASSWORD '*7C6CF6AE528FEEED1DA440E17EDFFF6DA934D32A' |
| GRANT ALL PRIVILEGES ON 'mio_user_db'.* TO 'mio_user'@'%'                                               |
+---------------------------------------------------------------------------------------------------------+
2 row in set (0.000 sec)

MariaDB [(none)]>

Adesso il server SQL ci mostra chiaramente che mio_user può amministrare il DB mio_user_db non rimane che uscire e tornare alla shell

MariaDB [(none)]> exit

Bye
#

ed il server SQL sempre educatamente ci saluta