web-dev-qa-db-ja.com

MySQLエラー:#1142-ユーザーに対してSELECTコマンドが拒否されました

サーバーの1つで特定のクエリに問題があります。私がテストした他のすべての場所では完全に動作しますが、使用したいサーバーでは動作しません。

次のSQLについてです。

SELECT facturen.id            AS fid, 
       projecten.id           AS pid, 
       titel, 
       facturen.totaal_bedrag AS totaal, 
       betaald, 
       datum 
FROM   facturen, 
       projecten 
WHERE  facturen.project_id = projecten.id 
       AND projecten.eigenaar = '1' 
ORDER  BY datum DESC 

これは私がそれから得るエラーコードです:

SELECT command denied to user 'marco'@'localhost' for table 'projecten'

表:事実:

CREATE TABLE IF NOT EXISTS `facturen` (
  `id` int(11) NOT NULL auto_increment,
  `project_id` int(11) NOT NULL,
  `datum` int(11) NOT NULL,
  `lever_datum` int(11) NOT NULL,
  `totaal_bedrag` decimal(9,2) NOT NULL,
  `btw` decimal(9,2) NOT NULL,
  `bedrijf` varchar(40) NOT NULL,
  `contactpersoon` varchar(60) NOT NULL,
  `adres` varchar(60) NOT NULL,
  `postcode` varchar(7) NOT NULL,
  `plaats` varchar(30) NOT NULL,
  `betaald` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=201200006 ;

投影:

CREATE TABLE IF NOT EXISTS `projecten` (
  `id` int(11) NOT NULL auto_increment,
  `titel` varchar(80) NOT NULL,
  `eigenaar` int(11) NOT NULL,
  `creatie_datum` int(11) NOT NULL,
  `eind_datum` int(11) NOT NULL,
  `totaal_bedrag` decimal(9,2) NOT NULL,
  `btw` decimal(9,2) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=201200004 ;

奇妙な部分は、「projecten」テーブルと「facturen」テーブルの両方で他のすべてのクエリが完全に機能することです。このクエリは、他の2つのサーバーでも正常に機能します。

26
Seph

MySQLに接続しているMySQLユーザーにSELECTパーミッションを付与する必要があります

ここと同じ質問 エラー:テーブル '<table-name>'のユーザー '<userid>' @ '<ip-address>'に対して拒否されたselectコマンド

リンクの回答を参照してください;)

16
khaled_webdev

私は同じ状況に直面しましたが、エラーの理由は間違ったデータベース名またはスキーマ名の使用が原因であったというおかしいです。

複数の問題があなたが言及したエラーにつながる可能性があるのは事実です。

22
Vaibs

このエラーは、テーブル名のエイリアスが原因で発生した構文エラーに対しても発生します。

たとえば、クエリの下で実行すると、

select a * from a.table1、b.table2 where a.table1 = b.table2

以下のエラーが発生します。

MySQLエラー:#1142。データベースからの応答。テーブル "table1"のユーザー "username @ ip"に対するSELECTコマンドが拒否されました

Solution:エイリアスtablenameの構文を適切に使用する必要があります。上記のインスタンスの構文ソリューション> select * from table1 a、table2 b where a.table1 = b.table2

7
veena v.k.

私もこの問題を抱えていたので、問題は、新しいサーバーに接続して、PHPコードを「my_Database」から「my_database」に変更しようとしていたデータベースに移動したことでした。 。

5
John Lamberis

これは、データベースユーザーの特権の問題です。最初にローカルホストのユーザー「マクロ」にアクセス権を確認して付与します

3
Dhileepan

だから私が遭遇した問題はこれでした...パーミッションを付与するために使用したアプリケーションは、Schema.TableNameを間違ったテーブルの単一のDBステートメントに変換しました。 GRANT SELECTとGRANT TABLE SELECTに細心の注意を払っていない場合は、UserNameを使用します。 Schema.Tableを適切にエスケープして、テーブルのグラントセレクトを手動で修正すると、問題が解決しました。

無関係かもしれませんが、あるクライアントがこれを間違っているとしたら、別のクライアントもそうかもしれないと想像できます。

お役に立てば幸いです。

1
CodeJohnny

無効な定義者でビューをインポートしたときに、サーバーでこのエラーが発生しました。

障害のあるビューを削除すると、エラーが修正されました。

エラーメッセージは、問題のビューについては何も言っていませんでしたが、ビューで使用されていたテーブルの1つについて「不平を言っていました」。

0
xyz