2012-01-26 3 views
0

私はqrtest_dbと呼ばれるリモートサーバにデータベースを持っており、接続してすべての権限を与えています。私のC#アプリケーションで、私は一日のものに通常の日のためにうまくそれにアクセスすることができ、更新など を削除、挿入そして私は、私は次のようにSHOWの助成金取り戻すないとき...MySQL MySQLでの.Netコネクタの使用

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

しかし、私がしようとした場合次のように、C#でGRANT文を実行します。 。 。

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

次に、cmd.ExecuteNonQueryでメッセージが返されます。 。 。

アクセスは「ルート」ユーザーのために拒否されました@「myIPAddress」データベース「qrtest_db」

に誰がこの出来事である理由についてどのような考えを持っていますか? 許可は.Netコネクタを介してリモートから許可されていませんか? 私はコンソールに座って1日中権利を与えることができます。

+1

あなただけの(明らかに助成金なしで)正確に同じコードを持つ一般的な選択クエリを実行することができますを持つユーザーを作成している必要があります。これは、開発マシン経由でmysqlサーバにログインする権限を持たない(エラーメッセージが示す)単純なものです。 – CodingGorilla

答えて

4

GRANT特権がありません。
となり、ALL PRIVILEGESにはGRANT特権が含まれていません。 Reference

all privileges'root'@'myIpAddress'ユーザーを作成しました。 GRANTは含まれていません。次に、この新しく作成されたユーザー('root'@'myIpAddress')を使用してdbサーバーに接続しました。あなたのC#アプリケーションは'root'@'myIpAddress'ユーザを使用してdbサーバに接続しています。 C#でGRANTコマンドを入力すると失敗します。このユーザー('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サーバに接続しています。彼はC#を使ってGrantコマンドを入力します。このユーザは 'GRANT'オプションを持っていないので失敗します。 –

+0

あなたは正しいです、私は彼の声明を間違って読んでいました。私が最初に読んだのは、リストした最初の2つのGRANTのようでした。しかし、2度目の読書で、彼はそれが「贈与の表示」の結果であると言います。 – CodingGorilla

関連する問題