Olen loonud andmebaasi, näiteks 'mydb'.
CREATE DATABASE mydb CHARACTER SET utf8 COLLATE utf8_bin;
CREATE USER 'myuser'@'%' IDENTIFIED BY PASSWORD '*HASH';
GRANT ALL ON mydb.* TO 'myuser'@'%';
GRANT ALL ON mydb TO 'myuser'@'%';
GRANT CREATE ON mydb TO 'myuser'@'%';
FLUSH PRIVILEGES;
Nüüd saan ma andmebaasi sisse logida kõikjalt, kuid ei saa't luua tabeleid.
Kuidas anda kõik õigused sellele andmebaasile ja (tulevikus) tabelitele. Ma ei saa 'mydb' andmebaasis tabeleid luua. Ma saan alati:
CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;
Nii loen ma oma "Super User" õigused (kuigi ma tavaliselt annaksin host'i).
Kuigi see vastus võib lahendada juurdepääsu probleemi, loob WITH GRANT OPTION
MySQL-i kasutaja, kes saab muuta teiste kasutajate õigusi.
GRANT OPTION privileeg võimaldab anda teistele kasutajatele või võtta teistelt kasutajatelt ära need õigused, mis teil endal on.
Turvalisuse huvides ei tohiks seda tüüpi kasutajakontot kasutada ühegi protsessi puhul, millele avalikkusel on juurdepääs (nt veebileht). Sellise kasutamise jaoks on soovitatav luua ainult andmebaasiõigustega kasutaja.
See on vana küsimus, kuid ma ei usu, et aktsepteeritud vastus on ohutu. See'on hea superkasutaja loomiseks, kuid mitte hea, kui soovite anda privileege ühele andmebaasile.
grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';
%
ei tundu katvat socket side, mille jaoks localhost
on mõeldud. WITH GRANT OPTION
on hea ainult superkasutajale, muidu on see tavaliselt turvarisk.
Loodan, et sellest on abi.
See on mõnele inimesele kasulik:
MySQL-i käsurealt:
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
Kahjuks ei ole newuseril sel hetkel mingeid õigusi, et andmebaasidega midagi teha. Tegelikult, kui newuser isegi üritab sisse logida (parooliga, password), ei pääse ta MySQL-i shell'ile.
Seetõttu tuleb kõigepealt anda kasutajale juurdepääs vajalikule teabele.
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Selles käsus olevad tärnid viitavad andmebaasile ja tabelile (vastavalt), millele nad saavad juurdepääsu - see konkreetne käsk võimaldab kasutajal lugeda, muuta, täita ja sooritada kõiki ülesandeid kõigis andmebaasides ja tabelites.
Kui olete oma uutele kasutajatele kehtestatavad õigused lõplikult kindlaks määranud, laadige alati kindlasti kõik õigused uuesti.
FLUSH PRIVILEGES;
Teie muudatused on nüüd jõustunud.
Lisateave: http://dev.mysql.com/doc/refman/5.6/en/grant.html
Kui te ei tunne end mugavalt käsureal, siis võite kasutada sellist klienti nagu MySQL workbench, Navicat või SQLyog.