2012-01-26 2 views
0

У меня есть база данных на удаленном сервере под названием qrtest_db и через шпатлевку, с которой я подключился и дал ей все привилегии. В моей C# приложения я могу получить доступ к нему очень хорошо для нормальной повседневной вещи, обновление, вставка удаление и т.д. И когда я ШОУ ГРАНТЫ я вернусь следующее ...MySQL Grant с использованием MySQL .Net-коннектора

GRANT ALL PRIVILEGES ON *.* TO 'root'@'myIpAddress' IDENTIFIED BY PASSWORD 'myPasswordencrypted' 
GRANT ALL PRIVILEGES ON `qrtest_db`.* TO 'root'@'myIpAddress' 

Но если я пытаюсь запустите оператор GRANT в C#, как показано ниже. , ,

"GRANT USAGE ON qrtest_db.* to 'root'@'" + someIPAddress + "' IDENTIFIED BY 'myPassword'"; 

затем на cmd.ExecuteNonQuery Я получаю сообщение обратно. , ,

Доступ запрещен для пользователя «корень» @ «myIPAddress» в базе данных «» qrtest_db

Кто-нибудь есть какие-либо идеи, почему это происходит? Предоставлено ли разрешение удаленно через разъем .Net? Я могу сидеть на консоли и предоставлять права в течение всего дня.

+1

Вы можете просто запустить общий запрос на выборку с точно таким же кодом (без гранта, очевидно). Это может быть так же просто, как не иметь разрешения на вход в сервер mysql через вашу машину разработки (что указывает сообщение об ошибке). – CodingGorilla

ответ

4

У вас нет GRANT привилегия.
Becasue ALL PRIVILEGES не содержит GRANT привилегия. Reference

Вы создали 'root'@'myIpAddress' пользователя с all privileges. Он не содержит GRANT. Затем вы использовали этого вновь созданного пользователя ('root'@'myIpAddress') для подключения к серверу db. Ваше приложение C# использует пользователя 'root'@'myIpAddress' для подключения к серверу db. Когда вы вводите команду GRANT через C#, она терпит неудачу. Поскольку этот пользователь ('root'@'myIpAddress') не имеет опции GRANT. Вы не создали его таким образом.

Вы должны быть создан пользователем с этими заявлениями (WITH GRANT OPTION прилагается)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'myIpAddress' IDENTIFIED BY PASSWORD 'myPasswordencrypted' with GRANT OPTION 
GRANT ALL PRIVILEGES ON `qrtest_db`.* TO 'root'@'myIpAddress' WITH GRANT OPTION 
+0

Он говорит, что может выдавать эту заявку на грант с «консоли» без проблем, поэтому я сомневаюсь, что это проблема. – CodingGorilla

+1

@Coding, он создал пользователя '' root '@ myIpAddress' со всеми привилегиями. все не содержит GRANT. Затем он использовал этот вновь созданный пользователь '' root '@ myIpAddress'' для подключения к серверу db. Его приложение C# использует '' root '@' myIpAddress'' для подключения к серверу db. Когда он вводит команду Grant через C#. Он терпит неудачу, потому что у этого пользователя нет опции «GRANT». –

+0

Вы правы, я неправильно прочитал его заявление, мое первоначальное чтение показалось, что эти первые два ГРАНТА, которые он перечислял, были тем, что он пытался предоставить. Но во втором чтении я вижу, что он говорит, что это результат «SHOW GRANTS». – CodingGorilla