Voglio creare un nuovo utente in MySQL e dargli pieno accesso solo ad un database, diciamo dbTest
, che creo con un comando come create database dbTest;
. Quali sarebbero i comandi MySQL per farlo?
Prova questo per creare l'utente:
CREATE USER 'user'@'hostname';
Prova questo per dargli accesso al database dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Se stai eseguendo il codice/sito accedendo a MySQL sulla stessa macchina, l'hostname sarebbe localhost.
Ora, la rottura.
GRANT
- Questo è il comando usato per creare utenti e concedere diritti a database, tabelle, ecc.
ALL PRIVILEGES
- Questo dice che l'utente avrà tutti i privilegi standard. Questo però non include il privilegio di usare il comando GRANT.
dbtest.*
- Questo indica a MySQL di applicare questi diritti per l'uso nell'intero database dbtest. Puoi sostituire l'* con specifici nomi di tabelle o routine di archiviazione se vuoi.
TO 'user'@'hostname'
- 'user' è lo username dell'account utente che stai creando. Nota: devi avere le virgolette singole dentro. 'hostname' dice a MySQL da quali host l'utente può connettersi. Se lo vuoi solo dalla stessa macchina, usa localhost
.
IDENTIFIED BY 'password'
- Come avrete capito, questo imposta la password per quell'utente.
Accedi a MySQL:
mysql -u root
Ora crea e concedi
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
In alternativa, se si vuole solo concedere l'accesso completo e illimitato a un database (ad esempio sulla propria macchina locale per un'istanza di test, si può concedere l'accesso all'utente anonimo, in questo modo:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
Questo va bene per i dati spazzatura nello sviluppo. Non fatelo con qualcosa di cui vi importa.