我正在尝试使用一个用户帐户访问多个数据库中的信息。即使我非常确定用户对两个数据库都具有权限,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给出了不允许错误,因为它无法识别数据库名称。