【问题标题】:Connecting through PHP to a MySQL user with less privileges通过 PHP 连接到具有较少权限的 MySQL 用户
【发布时间】:2015-03-14 14:48:58
【问题描述】:

也许我遗漏了一些东西,我误解了一些关于 MySQL-PHP 连接的东西......我想不通。我知道阅读量会很大,但我不能用更少的话来表达......对不起!

问题是:我正在使用 XAMPP;我在 Phpmyadmin 中创建了一个权限低于用户“root”(仅 INSERT 和 UPDATE)的“用户”,然后我将这个新用户在 php 文件中连接到 MySQL。连接并选择特定数据库('test')后,我使用 DELETE 查询只是为了查看它的作用,它实际上从我指定的表中删除了该行,即使我预计它无法做到这一点因为我用来连接数据库的用户只有插入和更新权限。我错过了什么?

在 phpmyadmin 中,在 'mysql' db - 'user' 表中,我的低权限 'user' 出现了,它具有我授予它的确切权限,并且它们是全局的!不过,如果我用这个“用户”连接到另一个数据库并尝试使用删除查询,它会说访问被拒绝。所以它就像一个只有一个数据库('test')的“管理员”,但对所有其他数据库的权限有限。

这是“用户”选项卡的屏幕截图。受限用户在底部('user') - http://gyazo.com/1ed0218982a4b80eb2927cee78e2a46c

【问题讨论】:

    标签: php mysql phpmyadmin


    【解决方案1】:

    可能的解决方案是,无论出于何种原因,您的应用程序都以不同的用户身份连接。尝试运行STATUS;` 而不是 DELETE 查询,并仔细查看输出。除其他外,您应该会看到类似

    的行
    Current user:           user@localhost
    

    如果是其他原因,则说明您的脚本没有以您认为的用户身份连接,您必须检查您的应用程序以了解发生这种情况的原因。如果这确实是 user@localhost,下一步是以该用户身份登录 phpMyAdmin(只需在登录字段中使用“用户”作为用户名)。连接后,在主页右侧查看您连接的用户和主机。

    一个不太可能的解决方案是您为 user@localhost 帐户添加了额外的数据库级权限 - 要检查这一点,请单击“编辑权限”链接,然后转到顶部的数据库选项卡,看看是否有什么奇怪的东西出现在那里。

    这是一个拥有全局 INSERT 和 UPDATE 权限的用户,以及对 sakila 数据库的完全控制权:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      • 2015-12-15
      相关资源
      最近更新 更多