permessi MySQL - non possono creare funzioni anche con la concessione 'CREATE ROUTINE'

StackOverflow https://stackoverflow.com/questions/3997957

  •  10-10-2019
  •  | 
  •  

Domanda

Quando ci si connette al server (da una macchina diversa) ottengo

Error Code: 1044 Access denied for user 'username'@'%' to database 'dbname'

quando cerco di creare una funzione. Ma quando guardo i miei permessi

SHOW GRANTS FOR CURRENT_USER;

ho

'GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE ROUTINE ON *.* TO ''username''@''%'' IDENTIFIED BY PASSWORD ''--stripped--'' WITH GRANT OPTION'

In particolare, questo include CREATE ROUTINE. Perchè non riesco a fare una funzione? Come posso modificarlo in modo che posso?

È stato utile?

Soluzione

Penso che ci sia un CREATE FUNCTION che è separato dalla CREATE ROUTINE. Ma in entrambi i casi, in quanto sembra che l'utente ha il 100% l'accesso completo in ogni caso si potrebbe fare:

GRANT ALL PRIVILEGES ON *.* TO user@'%' INDENTIFIED BY 'password' WITH GRANT OPTION

Tuttavia vorrei far notare che sarebbe stato molto meglio per impostare il '%' a 'localhost' e accedere solo il database in questo modo da una macchina locale (o almeno un attendibile IP). La mancanza di sicurezza con questo potrebbe causare problemi.

Sicuramente non si usa questo utente / password per la connessione al database da uno script web!

Modifica Ho dimenticato: le routine e le funzioni debbano essere concesse a livello globale . L'aggiunta di . tenta di aggiungere la concessione ai tavoli stessi, che è il motivo per cui non funziona. Prova:

GRANT ALTER ROUTINE,CREATE ROUTINE, EXECUTE ON * TO user@'%' IDENTIFIED BY 'password'

C'è una descrizione più lunga di qui: http: // dev. mysql.com/doc/refman/5.0/en/grant.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top