MySQL 错误:#1142 - SELECT 命令拒绝用户
Posted
技术标签:
【中文标题】MySQL 错误:#1142 - SELECT 命令拒绝用户【英文标题】:MySQL Error: #1142 - SELECT command denied to user 【发布时间】:2012-06-12 22:43:22 【问题描述】:我的一台服务器上的某个查询出现问题。在我测试过的所有其他地方它工作得很好,但在我想使用它的服务器上它不工作。
关于下面的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' 表上的所有其他查询都可以正常工作,这个查询在我的另外两台服务器上也可以正常工作。
【问题讨论】:
bt2.projecten 中的 bt2 是什么? 我的一个错字,因为我把它从我的旧数据库复制到这里。它不在主数据库上,所以问题没有得到解决。这也不是特权问题,因为我获得了完全访问权限。 你能打印出你的权限表的结果吗? @matthewdavidson,授予所有特权;) 没关系,但是您是否尝试过为没有名称冲突的字段使用限定名称?那么projecten.titel
之类的?
【参考方案1】:
您需要向连接到 mysql 的 MySQL 用户授予 SELECT 权限
和这里Error: select command denied to user '<userid>'@'<ip-address>' for table '<table-name>'的问题相同
查看链接的答案;)
【讨论】:
已经试过了,还是不行,不过还是谢谢。 您找到答案了吗?我现在有同样的问题。用户有权限,但不能从这个表中选择。 这可能是错误的SELECT表达式,这发生在5.7(似乎更严格) 在我的例子中,我使用了一个仅为任务创建的用户,而这个用户无权访问我的普通用户可以访问的temp
数据库。我不明白这一点。因此,我在我的 rdms 编辑器中创建了一个到主机的新连接,并直观地检查了连接是否正常工作,创建了连接,然后我看到了丢失的数据库。【参考方案2】:
这是您的数据库用户的权限问题。首先检查并授予用户权限 本地主机中的“马可”
【讨论】:
【参考方案3】:所以我遇到的问题是……我用来授予权限的应用程序将 Schema.TableName 转换为错误表中的单个 DB 语句,所以授予确实是错误的,但是当我们这样做时看起来是正确的如果您没有非常密切地关注 GRANT SELECT 与 GRANT TABLE SELECT,则显示用户名的授予。手动更正表格上的 Grant Select 并正确转义 Schema
.Table
解决了我的问题。
可能无关,但我可以想象如果一个客户做错了,另一个客户也可能这样做。
希望对您有所帮助。
【讨论】:
【参考方案4】:在 MySQL 查询浏览器中转到“工具”选项卡>“MySQL 管理员”>“用户管理”,然后将权限授予用户。
【讨论】:
问题不是关于一些未指定的浏览器,只是纯粹的 MySQL【参考方案5】:我也遇到了这个问题,对我来说,问题是我搬到了一个新的服务器上,我试图用我的 php 代码连接的数据库从“my_Database”更改为“my_database”。
【讨论】:
【参考方案6】:我遇到了同样的情况,但有趣的是错误的原因是由于使用了不正确的数据库或模式名称。
确实有多个问题会导致您提到的错误。
【讨论】:
+1 是的,有可能。我也打了这个。在我的情况下,我的新表名有一个“。”偶然。我希望表名是 MAP.DATE,其中 DATE 是时间戳。它使它像一个模式一样思考。我替换 .最终与_合作,它起作用了 在我的情况下更有趣。我刚刚注销并登录。it worked for me :)
是的,没错。在我的情况下,模式名称是错误的。更改为正确的架构名称后,查询有效【参考方案7】:
由于表名别名出现语法错误,也会出现此错误。
例如,当执行下面的查询时,
select * from a.table1, b.table2 where a.table1= b.table2
出现以下错误:
MySQL 错误:#1142。响应来自数据库。 SELECT 命令拒绝用户“username@ip”访问表“table1”
解决方案:应正确使用别名表名的语法,上述实例的语法解决方案:
select * from table1 a, table2 b where a.table1= b.table2
【讨论】:
【参考方案8】:当我导入带有无效定义器的视图时,我的服务器上发生了此错误。
删除错误视图修复了错误。
错误消息没有说明有关视图的任何内容,而是“抱怨”视图中使用的表之一。
【讨论】:
【参考方案9】:我刚刚清空了我的会话数据,然后它又开始工作了。您可以在此处找到该按钮:
【讨论】:
【参考方案10】:我也遇到了这个问题,我的情况是不正确的命名。我正在从本地服务器迁移到在线服务器。 我的 SQL 命令具有“database.tablename.column”结构。在线服务器中的数据库名称不同。例如我的代码是“pet.item.name”,而它需要是“pet_app.item.name” 更改数据库名称解决了我的问题。
【讨论】:
【参考方案11】:您需要通过给出命令 mysql> GRANT ALL PRIVILEGES . To 'username'@'localhost' 来为特定用户授予权限;然后给予 FLUSH PRIVILEGES;命令。 那就不会报这个错误了..希望对您有帮助谢谢..!
【讨论】:
请在评论中添加此类答案。 @PratikBhajankar 声誉 【参考方案12】:您应该只清除会话数据,这样一切都会正常工作
【讨论】:
这在 cmets 部分看起来更合适。 清除会话数据已经suggested作为同一页面上的答案。无需发布重复。谢谢。 我遇到了同样的问题,所以我尝试通过清除会话数据来解决它并且它有效,而且我似乎没有你的答案是我的错【参考方案13】:如果您使用/连接多个数据库,那么您应该为所有数据库使用相同的 DB_USERNAME
我通过对所有数据库使用相同的 DB_USERNAME 解决了同样的问题, 因为我在同一个项目中使用/连接多个数据库,并且每个数据库 DB_USERNAME 都不同,所以当我从多个数据库运行查询选择、更新、删除等时,就会出现这个错误。
因为如果您在查询中使用多个表并且数据库 DB_USERNAME 不同,您将收到此错误。
【讨论】:
【参考方案14】:我遇到了这个错误,因为我从本地主机复制了存储过程,并且数据库名称与我想使用的服务器上的不同。我花了几个小时才弄清楚,为什么我没有执行该过程的权限...请检查您的数据库名称:D 希望有人觉得这很有用...
【讨论】:
以上是关于MySQL 错误:#1142 - SELECT 命令拒绝用户的主要内容,如果未能解决你的问题,请参考以下文章
从服务器检索数据到本地返回 SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT 命令拒绝用户
MariaDB 10.2.6 上的“带有递归”语句的“错误 1142(42000):SELECT 命令被拒绝”
MySQL:错误 1142 (42000) 和错误 1064 (42000)
转: MySQL5.7 ERROR 1142 (42000)问题
mysql报错 1142 - SELECT command denied to user 'root_ssm'@'localhost' for table 'u