2013-05-19 2 views
0

Я использую MySQL 5.5.31 в Fedora, и у меня есть проблема с отказом от существующей процедуры. С суперпользователя:Отбросить несуществующую процедуру в MySQL

  • Создать новую базу данных: тест
  • Создание нового пользователя: тест
  • Дайте все разрешения для тестирования пользователя для тестирования базы данных

    GRANT ALL PRIVILEGES ON test.* TO 'test'@'%' WITH GRANT OPTION; 
    
  • С пользователем испытания

    CREATE PROCEDURE test.foo() SELECT NOW(); 
    DROP PROCEDURE IF EXISTS test.foo; 
    
    Query OK, 0 rows affected (0.00 sec) 
    
    DROP PROCEDURE IF EXISTS test.foo; 
    
    ERROR 1370 (42000): alter routine command denied to user 'test'@'localhost' for routine 'test.foo' 
    

Почему «IF EXISTS» не работает?

Если бы я сделать то же самое с суперпользователя все работает отлично (с предупреждением, но это нормально):

  • С тест пользователя

    CREATE PROCEDURE test.foo() SELECT NOW(); 
    
    DROP PROCEDURE IF EXISTS test.foo; 
    Query OK, 0 rows affected (0.00 sec) 
    
    DROP PROCEDURE IF EXISTS test.foo; 
    Query OK, 0 rows affected, 1 warning (0.00 sec) 
    

ответ

0

Во-первых, GRANT ALL PRIVILEGES ON test.* TO 'test'@'%' WITH GRANT OPTION; бы не предоставлять привилегии пользователю при подключении от localhost

Вы не ed для предоставления привилегий для localhost отдельно

Из-за ошибки, похоже, что вы отсоединяетесь после первого DROP и снова соединяетесь с localhost.

Ну, если вы выполняете эти 4 заявления один за другим, вы должны получить тот же результат, как вы получите с root

GRANT ALL PRIVILEGES ON test.* TO 'test'@'%' WITH GRANT OPTION; 
CREATE PROCEDURE test.foo() SELECT NOW(); 
DROP PROCEDURE IF EXISTS test.foo; 
DROP PROCEDURE IF EXISTS test.foo; 

Позвольте мне знать, если я сделал мой ответ ясный

+0

Спасибо за ваш ответ, я полностью пропустил эту часть: вам нужно предоставить привилегии для localhost отдельно – user2398796

+0

Во-первых, пытаетесь ли вы выполнить 4 заявления один за другим? – draxxxeus

+0

Все работает отлично, спасибо снова. – user2398796

Смежные вопросы