仅使用表权限集进行连接的权限被拒绝

仅使用表权限集进行连接的权限被拒绝

(最初在 StackOverflow 上询问,但有人建议我在这里询问) - MySQL 5.1.41 社区(Windows Server 2003) - .Net/Connector 6.1.3.0

我刚刚创建了一个新用户,我授予的权限不是架构权限,而是特定表的权限。换句话说,没有设置全局或架构级别的权限,只设置了几个特定表的权限。这似乎是一个完全可以接受的策略,根据我准备好的内容,MySQL 将搜索:

  1. 全球的
  2. 模式/数据库
  3. 桌子
  4. 柱子

获得适当的权限。但是,当我尝试使用这个新用户帐户打开与服务器的连接时,我收到权限被拒绝的错误。

拒绝用户“xxxxxx”@“%”访问数据库“xxxxxxx”

我尝试了几个不同的客户端,结果是一样的。我还检查了服务器日志,没有其他详细信息,只有以下内容:

110816 10:23:15 543 连接[电子邮件保护]在 xxxxxxxx 543 Init DB 访问被拒绝,用户‘xxxxx’@‘%’ 对数据库‘xxxxxxx’”

如果我授予相关架构上的 SELECT 权限,我就可以正常连接。我是否误解了权限系统的工作方式,还是它应该像我想象的那样工作?

答案1

如果您使用手动插入 mysql.user 添加用户,则需要先运行,flush privileges然后才能使用该用户登录。如果您使用GRANT创建用户,则刷新将自动完成。

以下是插入示例:

INSERT INTO mysql.user (user, host, password) 
  VALUES ('user', 'localhost', password('yourpassword'));

答案2

错误消息告诉您需要知道的信息:无法访问数据库。如果不访问封闭数据库,则无法访问表,因此请向后者授予适当的权限。这有点像被授予对服务器上文件的访问权限,但被拒绝访问服务器本身。

相关内容