Разрешение пользователя MySQL на хранимую процедуру

8

Я создал простую хранимую процедуру:

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)

Но не удалось его запустить:

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

Возможно ли, что мое имя пользователя - пустая строка? Как создать пользователей и предоставить привилегии? Могу ли я предоставить пользователю все привилегии для всех объектов в базе данных?

Адам Матан
источник

Ответы:

3

Поскольку само сообщение об ошибке говорит о том, что у пользователя нет прав на выполнение.

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

Вы должны предоставить разрешение на выполнение этому пользователю. Для этого вам необходимо войти в систему как пользователь root и предоставить разрешение как

 grant execute on db.* to user@localhost;

Для других ваших запросов:

  1. Да. Возможно, ваше имя пользователя является пустой строкой, но создавать таких пользователей небезопасно.

  2. Для создания и предоставления привилегий вкратце взгляните на эту ссылку.

  3. Да, вы можете предоставить все привилегии всем сущностям в базе данных . для этого вы можете выполнить команду как

Войдите в систему как пользователь root и введите команду

GRANT ALL ON DB_NAME.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Абдул Манаф
источник