Udelenie **všetkých** oprávnení v databáze

Vytvoril som databázu, napríklad '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;

Teraz sa môžem prihlásiť do databázy odkiaľkoľvek, ale nemôžem'vytvoriť tabuľky.

Ako udeliť všetky práva na túto databázu a (v budúcnosti) tabuľky. Nemôžem'vytvárať tabuľky v databáze 'mydb'. Vždy sa mi zobrazí:

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

Takto si vytvorím svoje "Super používateľské" oprávnenia (hoci normálne by som zadal hostiteľa).

DÔLEŽITÁ POZNÁMKA

Hoci táto odpoveď môže vyriešiť problém s prístupom, WITH GRANT OPTION vytvorí používateľa MySQL, ktorý môže upravovať oprávnenia iných používateľov.

Privilégium GRANT OPTION umožňuje udeliť iným používateľom alebo odobrať iným používateľom tie oprávnenia, ktoré sami vlastníte.

Z bezpečnostných dôvodov by ste tento typ používateľského účtu nemali používať pre žiadny proces, ku ktorému bude mať prístup verejnosť (napr. webová stránka). Odporúča sa, aby ste si vytvorili používateľa len s databázovými oprávneniami na takýto druh použitia.

Komentáre (14)

Je to stará otázka, ale nemyslím si, že prijatá odpoveď je bezpečná. Je'to dobré na vytvorenie superužívateľa, ale nie je to dobré, ak chcete udeľovať oprávnenia v jednej databáze.

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

Zdá sa, že % nepokrýva komunikáciu so soketom, na ktorú je určený localhost. Možnosť WITH GRANT OPTION je dobrá len pre superužívateľa, inak je zvyčajne bezpečnostným rizikom.

Dúfam, že to pomôže.

Komentáre (7)

Pre niektorých ľudí to bude užitočné:

Z príkazového riadku MySQL:

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

Bohužiaľ, v tomto okamihu nemá newuser žiadne oprávnenie robiť čokoľvek s databázami. V skutočnosti, ak sa newuser dokonca pokúsi prihlásiť (s heslom, password), nebude sa môcť dostať do shellu MySQL.

Preto je potrebné v prvom rade poskytnúť používateľovi prístup k informáciám, ktoré bude potrebovať.

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

Hviezdičky v tomto príkaze odkazujú na databázu a tabuľku (v uvedenom poradí), ku ktorým má prístup - tento konkrétny príkaz umožňuje používateľovi čítať, upravovať, vykonávať a vykonávať všetky úlohy vo všetkých databázach a tabuľkách.

Po dokončení oprávnení, ktoré chcete nastaviť pre nových používateľov, vždy nezabudnite načítať všetky oprávnenia.

FLUSH PRIVILEGES;

Vaše zmeny budú teraz platné.

Ďalšie informácie nájdete na adrese: http://dev.mysql.com/doc/refman/5.6/en/grant.html

Ak vám nevyhovuje príkazový riadok, môžete použiť klienta, napríklad MySQL workbench, Navicat alebo SQLyog.

Komentáre (4)