Ik wil een nieuwe gebruiker aanmaken in MySQL en die volledige toegang geven tot slechts één database, zeg dbTest
, die ik aanmaak met een commando als create database dbTest;
. Wat zouden de MySQL commando's zijn om dat te doen?
Probeer dit om de gebruiker aan te maken:
CREATE USER 'user'@'hostname';
Probeer dit om hem toegang te geven tot de database dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Als u de code/site die MySQL benadert op dezelfde machine draait, is de hostnaam localhost.
Nu, het uitsplitsen.
GRANT
- Dit is het commando dat gebruikt wordt om gebruikers aan te maken en rechten te verlenen aan databases, tabellen, etc.
ALL PRIVILEGES
- Dit vertelt het dat de gebruiker alle standaard rechten krijgt. Dit omvat echter niet het recht om het GRANT commando te gebruiken.
dbtest.*
- Dit instrueert MySQL om deze rechten toe te passen voor gebruik in de gehele dbtest database. U kunt de * vervangen door specifieke tabel namen of store routines als u dat wilt.
TO 'user'@'hostname'
- 'user' is de gebruikersnaam van de gebruikersaccount die u aanmaakt. Opmerking: Je moet de enkele aanhalingstekens er tussen hebben. 'hostname' vertelt MySQL van welke hosts de gebruiker kan verbinden. Als u het alleen vanaf dezelfde machine wilt, gebruik dan localhost
IDENTIFIED BY 'password'
- Zoals je al geraden had, stelt dit het wachtwoord in voor die gebruiker.
Log in op MySQL:
mysql -u root
Maak nu en verleen
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Als alternatief, als u alleen volledige onbeperkte toegang tot een database wilt verlenen (b.v. op uw lokale machine voor een test instantie, dan kunt u toegang verlenen aan de anonieme gebruiker, zoals dit:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
Dit is prima voor junk data in ontwikkeling. Doe dit niet met iets waar je om geeft.