V MySQL želim ustvariti novega uporabnika in mu omogočiti popoln dostop samo do ene podatkovne zbirke, recimo dbTest
, ki jo ustvarim z ukazom, kot je create database dbTest;
. Kateri so ukazi MySQL za to?
Poskusite ustvariti uporabnika s tem:
CREATE USER 'user'@'hostname';
S tem mu omogočite dostop do podatkovne zbirke dbTest
:
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Če uporabljate kodo/strani z dostopom do MySQL na istem računalniku, je ime gostitelja localhost.
Zdaj pa razčlenitev.
GRANT
- Ta ukaz se uporablja za ustvarjanje uporabnikov in dodeljevanje pravic do podatkovnih zbirk, tabel itd.
ALL PRIVILEGES
- s tem ukazom uporabniku določite vse standardne privilegije. To ne vključuje privilegija za uporabo ukaza GRANT.
dbtest.*
- To je navodilo, da MySQL uporabi te pravice za uporabo v celotni podatkovni zbirki dbtest. Če želite, lahko * zamenjate z določenimi imeni tabel ali rutinami shranjevanja.
TO 'user'@'hostname'
- 'user' je uporabniško ime uporabniškega računa, ki ga ustvarjate. Opomba: V njem morajo biti enojne navednice. 'ime gostitelja' pove MySQL, s katerih gostiteljev se lahko uporabnik poveže. Če želite, da je dostop mogoč samo z istega računalnika, uporabite localhost
.
IDENTIFIED BY 'password'
- Kot ste že uganili, to nastavi geslo za tega uporabnika.
Prijavite se v MySQL:
mysql -u root
Zdaj ustvarite in podelite
GRANT ALL PRIVILEGES ON dbTest.* To 'user'@'hostname' IDENTIFIED BY 'password';
Če želite samo odobriti popoln neomejen dostop do zbirke podatkov (npr. na lokalnem računalniku za testno instanco), lahko anonimnemu uporabniku odobrite dostop, kot sledi:
GRANT ALL PRIVILEGES ON dbTest.* To ''@'hostname'
To je v redu za neželene podatke v razvoju. Tega ne počnite z ničemer, kar vam je pomembno.