Autorizzazione utente MySQL per la procedura memorizzata


8

Ho creato una semplice procedura memorizzata:

mysql> CREATE FUNCTION hello (s CHAR(20))
    -> RETURNS CHAR(50) DETERMINISTIC
    -> RETURN CONCAT('Hello, ',s,'!');
Query OK, 0 rows affected, 1 warning (0.00 sec)

Ma non è riuscito a eseguirlo:

mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'

È possibile che il mio nome utente sia una stringa vuota? Come posso creare utenti e concedere privilegi? Posso concedere a un utente tutti i privilegi su tutte le entità all'interno di un database?

Risposte:


3

Poiché il messaggio di errore stesso indica che l' utente non dispone delle autorizzazioni di esecuzione.

mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'

È necessario concedere l'autorizzazione Execute a quell'utente. Per questo è necessario accedere come utente root e concedere l'autorizzazione come

 grant execute on db.* to user@localhost;

Per le altre tue domande:

  1. Sì È possibile che il tuo nome utente sia una stringa vuota ma non è sicuro creare gli utenti in questo modo.

  2. Per creare e concedere i privilegi in breve, dai un'occhiata a questo link.

  3. Sì, puoi concedere tutti i privilegi su tutte le entità all'interno di un database . per questo puoi eseguire un comando come

Accedi come utente root ed esegui un comando

GRANT ALL ON DB_NAME.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.