2013-07-11 14 views
17

próbuję wykonać ten zapytań -nie można znaleźć żadnego pasującego wiersza w tabeli użytkownika

DROP DATABASE IF EXISTS `hotel`; 

GRANT USAGE ON *.* TO 'user'@'localhost'; 
DROP USER 'user'@'localhost'; 

CREATE USER [email protected] IDENTIFIED BY 'user'; 

CREATE DATABASE `hotel` 
    CHARACTER SET 'utf8' 
    COLLATE 'utf8_general_ci'; 

GRANT USAGE ON *.* to 'user'@'localhost' identified by 'user'; 

ale zawsze błąd na

GRANT USAGE ON *.* TO 'user'@'localhost' Error Code: 1133. Can't find any matching row in the user table 0.000 sec 

Myślałem, że Grant usage utworzyć nowego użytkownika w razie użytkownik nie istnieje. Co jest nie tak?

+2

apostrofami 'utworzyć użytkownika 'user' @ 'localhost' identyfikowane przez 'użytkownika'; '-? – criticalfix

+0

Hm. Tak. To jest pojedynczy cytat. – lapots

Odpowiedz

10

Pomyślałem, że użycie Grantu utworzy nowego użytkownika, jeśli użytkownik nie istnieje. Co jest nie tak?

Z poziomu documentation można ustawić opcję zezwalania mysql na utworzenie użytkownika, jeśli nie istnieje.

NO_AUTO_CREATE_USER

Prevent oświadczenie GRANT automatyczne tworzenie nowych użytkowników, jeśli byłoby inaczej to zrobić, chyba że hasło jest niepusty również określony.

Aby ustawić opcję:

Można zmienić tryb SQL w czasie wykonywania przy użyciu SET [GLOBAL | SESSION] Oświadczenie sql_mode = 'sposobach', aby ustawić wartość systemową sql_mode.

+4

uruchom 'SELECT @@ GLOBAL.sql_mode;', aby sprawdzić, czy 'NO_AUTO_CREATE_USER' nie jest obecny. Jeśli jest obecny, utwórz zestaw operacji bez 'NO_AUTO_CREATE_USER'. na przykład 'set sql_mode = 'ONLY_FULL_GROUP_BY, STRICT_TRANS_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, ERROR_FOR_DIVISION_BY_ZERO, NO_ENGINE_SUBSTITUTION';' – nidheeshdas

44

mam ten sam błąd z

grant all on newdb.* to [email protected]; 

rozwiązany z 'zidentyfikowane przez':

grant all on newdb.* to [email protected] identified by 'password'; 
+3

dziwne, dlaczego potrzebuję tego, gdy jestem rootem – ospider

Powiązane problemy