it-swarm-eu.dev

Oprávnění uživatele MySQL k uložené proceduře

Vytvořil jsem jednoduchou uloženou proceduru:

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)

Ale nepodařilo se to spustit:

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

Je možné, že moje uživatelské jméno je prázdný řetězec? Jak vytvořím uživatele a udělím oprávnění? Mohu udělit uživateli všechna oprávnění pro všechny entity v databázi?

8
Adam Matan

Protože chybová zpráva sama o sobě říká, že uživatel nemá oprávnění ke spuštění.

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

Tomuto uživateli musíte udělit oprávnění k vykonání. Chcete-li , musíte se přihlásit jako uživatel root a udělit oprávnění jako

 grant execute on db.* to [email protected];

Pro vaše další dotazy:

  1. Ano Je možné, že vaše uživatelské jméno je prázdný řetězec, ale není bezpečné vytvářet takovéto uživatele.

  2. Pro stručné vytvoření a udělení oprávnění se podívejte na This Link.

  3. Ano, můžete udělit všechna oprávnění pro všechny entity v databázi . za tímto účelem můžete provést příkaz jako

Přihlaste se jako uživatel root a zadejte příkaz

GRANT ALL ON DB_NAME.* TO 'USER'@'Host' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
3
Abdul Manaf