2013-07-11 16 views
17

Sto cercando di eseguire questo query -Non riesco a trovare alcuna riga corrispondente nella tabella user

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'; 

Ma ho sempre ottenere errore

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

ho pensato che Grant usage creare un nuovo utente, se l'utente non esiste. Che c'è?

+2

citazioni singolo 'Crea utente 'user' @ 'localhost' IDENTIFIED BY 'utente'; '-? – criticalfix

+0

Hm. Sì. È una singola citazione. – lapots

risposta

10

Ho pensato che l'utilizzo di Grant crea un nuovo utente se l'utente non esiste. Che c'è?

Da documentation, è possibile impostare un'opzione per consentire a mysql di creare un utente se non esiste.

NO_AUTO_CREATE_USER

Prevenire l'istruzione GRANT di creare automaticamente i nuovi utenti se sarebbe altrimenti farlo, a meno che una password non vuota è anche specificato.

per impostare l'opzione:

È possibile cambiare la modalità di SQL in fase di esecuzione utilizzando un set [GLOBAL | SESSIONE] dichiarazione sql_mode = 'modi' per impostare il valore di sistema sql_mode.

+4

eseguire 'SELECT @@ GLOBAL.sql_mode;' per verificare se 'NO_AUTO_CREATE_USER' è presente di no. Se presente, quindi crea un'operazione impostata senza 'NO_AUTO_CREATE_USER'. per esempio. '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

ho ottenuto lo stesso errore con

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

risolto con 'identificata da':

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

strano, perché ho bisogno di questo quando sono root – ospider

Problemi correlati