43

我的一台服务器上的某个查询遇到问题。在我测试过的所有其他地方,它完全可以正常工作,但在我想使用它的服务器上却无法正常工作。

这是关于以下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”表上的所有其他查询都可以正常工作,这个查询在我的另外两台服务器上也可以正常工作。

4

15 回答 15

48

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

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

于 2015-08-19T09:38:30.263 回答
19

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

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

查看链接的答案;)

于 2012-06-08T21:35:35.970 回答
10

由于表名别名而发生的语法错误也会出现此错误。

例如,当执行下面的查询时,

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

发生以下错误:

MySQL 错误:#1142。响应来自数据库。表“table1”拒绝用户“username@ip”的 SELECT 命令

解决方案:应正确使用别名表名的语法,上述实例的语法解决方案:

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

于 2017-04-04T06:59:30.323 回答
5

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

于 2015-05-27T12:16:19.820 回答
3

这是您的数据库用户中的特权问题。首先在 localhost 中检查并授予用户“marco”权限

于 2012-07-03T11:57:15.917 回答
1

所以我遇到的问题是……我用来授予权限的应用程序将 Schema.TableName 转换为错误表中的单个 DB 语句,所以授予确实是错误的,但是当我们执行 SHOW GRANTS 时看起来是正确的FOR UserName,如果您没有非常关注 GRANT SELECT 与 GRANT TABLE SELECT。手动更正 Table 上的 Grant Select 并正确转义Schema. Table解决了我的问题。

可能无关,但我可以想象如果一个客户做错了,另一个客户也可能这样做。

希望这会有所帮助。

于 2014-01-23T00:04:42.210 回答
1

我也遇到了这个问题,我的情况是不正确的命名。我正在从本地服务器迁移到在线服务器。我的 SQL 命令具有“ database.tablename.column ”结构。在线服务器中的数据库名称不同。例如,我的代码是“ pet.item.name ”,而它需要是“ pet_app.item.name ”,更改数据库名称解决了我的问题。

于 2020-08-11T06:08:51.677 回答
0

当我导入具有无效定义器的视图时,此错误发生在我的服务器上。

删除错误视图修复了错误。

错误消息没有说明有关视图的任何内容,而是“抱怨”视图中使用的其中一个表。

于 2019-08-21T07:52:07.737 回答
0

我刚刚清空了我的会话数据,然后它又工作了。您可以在此处找到该按钮:

于 2020-07-14T18:17:56.643 回答
0

您需要通过给出命令 mysql> GRANT ALL PRIVILEGES 来为特定用户授予权限到“用户名”@“本地主机”;然后给予 FLUSH PRIVILEGES;命令。然后它不会给出这个错误..,希望对您有帮助谢谢..!

于 2020-11-11T07:49:12.623 回答
0

如果您使用/连接多个数据库,那么您应该对所有数据库使用相同的 DB_USERNAME

我通过对所有数据库使用相同的 DB_USERNAME 解决了同样的问题,因为我在同一个项目中使用/连接多个数据库并且每个数据库 DB_USERNAME 都是不同的,所以当我从多个数据库运行查询选择、更新、删除等时得到这个错误。

因为如果您在查询中使用多个表并且数据库 DB_USERNAME 不同,您将收到此错误。

于 2021-03-20T10:32:11.693 回答
0

我有这个错误,因为我从 localhost 复制了存储过程,并且数据库名称与我想使用它的服务器上的不同。我花了几个小时才弄清楚,为什么我没有执行该过程的权限...请检查您的数据库名称:D 希望有人觉得这很有用...

于 2021-09-04T11:37:55.203 回答
0

我试图SELECT * FROM information_schema.INNODB_METRICS;在所谓的“预算主机”上发布。我得到 1142 因为读取该特定系统表需要PROCESS特权而用户没有它。我不得不四处游荡才能弄清楚它是PROCESS不是缺失的其他特权。

(不,“预算主机”不会将该权限授予用户。他们可能不希望他们的客户看到他们的服务器超载得多么荒谬。因为 MySQL 许可证是费用……等等,不,他们是自由。)

于 2022-02-24T00:14:58.603 回答
-1

你应该只需要清除会话数据就可以了

于 2021-01-15T10:43:19.203 回答
-3

在 MySQL 查询浏览器中,转到“工具”选项卡 >“MySQL 管理员”>“用户管理”,然后将权限授予用户。

于 2014-12-07T11:07:57.863 回答