【发布时间】:2014-03-05 16:08:49
【问题描述】:
我正在尝试使用一个用户帐户访问多个数据库中的信息。尽管我相当确定用户对这两个数据库都拥有权限,但 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中的数据。
有谁知道如何解决这个问题?
【问题讨论】:
-
如果您尝试一个只访问
uac_bridge表的查询,它可以工作吗? -
show grants for demos_barboek@localhost说什么? -
第一个;不,那也行不通,如果我使用 USE database_b;第一的。第二,不幸的是我不知道,因为我没有任何可以执行该查询的用户帐户。我通过 DirectAdmin 控制授权。 P.S.:其实 USE databas_b 调用也被拒绝(错误 1044)
-
那么错误似乎是真实的,并且显然与在同一查询中使用多个数据库无关。他只是没有访问该表的权限。我不熟悉 DirectAdmin。我建议您在 dba.stackexchange.com 上寻求帮助,这不是编程问题。
-
我刚刚测试并确认使用此帐户登录phpMyAdmin时可以从该数据库中读取数据。所以这似乎是一个编程问题?我在 StackOverflow 上找到了相关问题,我现在正在尝试找到它们..
标签: php mysql user-accounts multiple-databases