我正在尝试使用一个用户帐户访问多个数据库中的信息。即使我非常确定用户对两个数据库都具有权限,MySQL仍拒绝了我在第二个数据库上的SELECT查询。

我的SQL查询如下所示:

SELECT a.id AS id, a.name AS a_name, b.naam AS b_name
FROM accounts a
LEFT JOIN database_b.uac_bridge bridge ON a.id = bridge.foreign_id
LEFT JOIN database_b.leden b ON b.id = bridge.master_id
WHERE a.active=1


我已从代码中删除了一些名称,并从CodeIgniter ActiveRecord进行了音译,因此我希望查询中没有拼写错误。我相当确定查询本身是正确的,它在我的开发机(Windows 7,MySQL 5.5.14)上运行良好,但是在服务器上失败(不确定什么操作系统,某些Linux变体,MySQL 5.5.27)。

我收到以下错误消息:

Error Number: 1142
SELECT command denied to user 'username'@'localhost' for table 'uac_bridge'


登录的用户是为database_a创建的,并且在database_b(通过DirectAdmin配置)上具有SELECT授予(但没有其他授予)。我已经确认用户可以通过登录phpMyAdmin来读取database_b中的数据。

有谁知道如何解决?

最佳答案

作为参考,答案很简单,MySQL数据库名称在Linux上区分大小写,但在Windows(https://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html)上不区分大小写。

这是错误,我没有以正确的大写形式引用数据库,MySQL给出了不允许错误,因为它无法识别数据库名称。

10-08 07:45
查看更多