MySQL错误:#1142 - 拒绝用户的SELECT命令

Sep*_*eph 26 mysql select command denied

我在其中一台服务器上遇到了一些疑问.在我测试过的所有其他地方它完全正常但在服务器上我想使用它它不起作用.

这是关于以下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 
Run Code Online (Sandbox Code Playgroud)

这是我从中得到的错误代码:

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

表格:facturen:

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 ;
Run Code Online (Sandbox Code Playgroud)

projecten:

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 ;
Run Code Online (Sandbox Code Playgroud)

奇怪的是,'projecten'表和'facturen'表上的每个其他查询都可以正常工作,这个查询在我的另外两个服务器上工作正常.

Vai*_*ibs 22

我面临同样的情况,但有趣的是错误的原因是由于使用了不正确的数据库或模式名称.

确实,多个问题可能导致您提到的错误.

  • +1 是的,这是可能的。我也打了这个..在我的情况下,我的新表名有一个“。” 偶然。我希望表名是 MAP.DATE,其中 DATE 是时间戳。它使它像模式一样思考。我替换 . 最终使用 _ 并且它起作用了 (3认同)
  • 就我而言更有趣一点。我刚刚注销并登录。`这对我有用:)` (2认同)

kha*_*dev 16

您需要向连接到MySQL的MySQL用户授予SELECT权限

与此处相同的问题错误:为表'<table-name>'选择拒绝用户'<userid>'@'<ip-address>'的命令

看到链接的答案;)

  • 你找到了答案吗?我现在有同样的问题.用户具有权限,但无法从这一个表中进行选择. (3认同)

小智 8

由于别名tablename导致语法错误,也会出现此错误.

例如,在查询下执行时,

从a.table1,b.table2中选择*,其中a.table1 = b.table2

发生以下错误:

MySQL错误:#1142.响应形成数据库.对表"table1"的用户"username @ ip"拒绝SELECT命令

解决方案:应该正确使用别名tablename的语法,上面的实例语法解决方案> select*from table1 a,table2 b其中a.table1 = b.table2


小智 5

我也遇到了这个问题,对我来说,问题是我移到了新服务器上,并且尝试使用PHP代码连接的数据库从“ my_Database”更改为“ my_database”。