Suteikti **visas** duomenų bazės privilegijas

Sukūriau duomenų bazę, pavyzdžiui, '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;

Dabar galiu prisijungti prie duomenų bazės iš visur, bet negaliu sukurti lentelių.

Kaip suteikti visas privilegijas toje duomenų bazėje ir (ateityje) lentelėse. Negaliu kurti lentelių 'mydb' duomenų bazėje. Visada gaunu:

CREATE TABLE t (c CHAR(20) CHARACTER SET utf8 COLLATE utf8_bin);
ERROR 1142 (42000): CREATE command denied to user 'myuser'@'...' for table 't'
Sprendimas
GRANT ALL PRIVILEGES ON mydb.* TO 'myuser'@'%' WITH GRANT OPTION;

Taip aš sukuriu savo "Super vartotojo" privilegijas (nors įprastai turėčiau nurodyti kompiuterį).

SVARBI PASTABA

Nors šis atsakymas gali išspręsti prieigos problemą, WITH GRANT OPTION sukuria "MySQL" naudotoją, kuris gali redaguoti kitų naudotojų teises.

GRANT OPTION privilegija leidžia suteikti kitiems naudotojams arba panaikinti iš kitų naudotojų tas teises, kurias turite patys.

Saugumo sumetimais tokio tipo naudotojo paskyros neturėtumėte naudoti jokiam procesui, prie kurio prieigą turės visuomenė (t. y. interneto svetainei). Tokiam naudojimui rekomenduojama sukurti naudotoją, turintį tik duomenų bazės teises.

Komentarai (14)

Tai senas klausimas, bet nemanau, kad priimtas atsakymas yra saugus. Jis'geras kuriant super vartotoją, bet nėra geras, jei norite suteikti privilegijas vienoje duomenų bazėje.

grant all privileges on mydb.* to myuser@'%' identified by 'mypasswd';
grant all privileges on mydb.* to myuser@localhost identified by 'mypasswd';

Panašu, kad % neapima ryšio per lizdą, kuriam skirtas localhost. WITH GRANT OPTION tinka tik supernaudotojui, kitu atveju tai paprastai kelia pavojų saugumui.

Tikiuosi, kad tai padės.

Komentarai (7)

Kai kuriems žmonėms tai bus naudinga:

Iš MySQL komandinės eilutės:

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';

Deja, šiuo metu newuser neturi jokių teisių atlikti bet kokius veiksmus su duomenų bazėmis. Tiesą sakant, jei newuser net pabandys prisijungti (su slaptažodžiu, password), jis negalės pasiekti MySQL apvalkalo.

Todėl pirmiausia reikia suteikti naudotojui prieigą prie jam reikalingos informacijos.

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';

Žvaigždutės šioje komandoje nurodo duomenų bazę ir lentelę (atitinkamai), prie kurių jie gali prisijungti - ši konkreti komanda leidžia naudotojui skaityti, redaguoti, vykdyti ir atlikti visas užduotis visose duomenų bazėse ir lentelėse.

Kai galutinai nustatysite leidimus, kuriuos norite nustatyti naujiems naudotojams, visada būtinai iš naujo įkelkite visas privilegijas.

FLUSH PRIVILEGES;

Dabar jūsų pakeitimai įsigalios.

Daugiau informacijos: http://dev.mysql.com/doc/refman/5.6/en/grant.html

Jei jums nepatinka komandinė eilutė, galite naudoti klientą, pavyzdžiui, MySQL workbench, Navicat arba SQLyog.

Komentarai (4)