Amministrare MySQL via riga di comando non è per nulla spaventoso e se si conosce la sintassi puoi ottenere il risultato desiderato in molto rapido rispetto all’uso di una GUI.
Creare un utente MySQL
La prima cosa da fare è collegarsi alla cli di MySQL usando un account con sufficienti permessi. In questo tutorial useremo l’account root.
Digitare quindi il seguente comando seguito dalla password quando richiesto
mysql -u root -p
Una volta collegati al prompt di MySQL utilizzare una delle seguenti query, personalizzandola con nome utente e host desiderato.
Utente con autenticazione via auth_socket plugin
Questo plugin richiede che il nome utente a livello di Sistema Operativo che invoca la cli di MySQL coincida con il nome dell’utente MySQL.
CREATE USER 'alessandro'@'localhost' IDENTIFIED WITH authentication_plugin BY 'my-strong-password';
Questo metodo di autenticazione permette un ottimo livello di sicurezza, senza richiedere all’utente di inserire la sua password al momento dell’autenticazione. Tuttavia non permette connessioni remote al DB, il che può essere non adatto quando programmi esterni hanno bisogno di interagire con MySQL.
Utente con autenticazione via caching_sha2_password
Per un’autenticazione utente mediante password via caching_sha2_password
plugin.
CREATE USER 'alessandro'@'localhost' IDENTIFIED BY 'my-strong-password';
Utente con autenticazione via mysql_native_password
Se si vuole creare un utente che si autentichi attraverso il vecchio, ma comunque sicuro, mysql_native_password
plugin, utilizziamo la seguente query
CREATE USER 'alessandro'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my-strong-password';
Questo metodo è consigliato nel caso la propria applicazione sia scritta in PHP. Ci sono infatti problemi noti di compatibilità tra il metodo di autenticazione caching_sha2_password
ed alcune versioni di PHP.
Nel caso si può creare l’utente con autenticazione caching_sha2_password
e nel caso di problemi modificarne il metodo di autenticazione con questa query
ALTER USER 'alessandro'@'localhost' IDENTIFIED WITH mysql_native_password BY 'my-strong-password';
Assegnare permessi ad un utente MySQL
I privilegi, o permessi, definiscono quali azioni sono permesse ad un utente su uno specifico database o tabella. Si possono assegnare con un unico comando molteplici permessi, separando ognuno con una virgola.
GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT, REFERENCES, RELOAD on *.* TO 'alessandro'@'localhost';
Nel caso si vogliano assegnare permessi da super user ad un utente possiamo utilizzare la seguente query
GRANT ALL PRIVILEGES ON *.* TO 'alessandro'@'localhost';
Per assegnare permessi ad una specifica tabella di uno specifico database si utilizza una sintassi simile alla seguente
GRANT ALL PRIVILEGES ON mytable.mydatabase TO 'alessandro'@'localhost';
Seppur non necessaria in questo scenario, questa query permette di ricaricare in memoria i permessi utente modificati
FLUSH PRIVILEGES;