【问题标题】:How to give somebody access to only some MySQL tables when I cannot create a new MySQL user?当我无法创建新的 MySQL 用户时,如何让某人只能访问一些 MySQL 表?
【发布时间】:2018-03-08 00:30:24
【问题描述】:

我正在寻找以下最佳解决方案:

  1. 我需要通过 PhpMyAdmin 或类似工具授予某人访问我的 MySQL 服务器上一个(多个)特定数据库的权限。

  2. 不允许我创建新的 MySQL 用户帐户。

  3. 1234563 p>
  4. PMA 将使用安全存储的真实用户名和密码连接到我的 MySQL 服务器。但是我的人永远不会看到实际的数据库用户名和密码。他只能看到并能够编辑我服务器上一个指定数据库中的表。

这是否可以实现?谢谢!

【问题讨论】:

  • 是否已经存在具有您需要的有限访问权限的用户帐户?如果不是,第 4 步将如何解决问题?他将有权访问存储的用户名可以访问的所有表。
  • 如果有这样的账号,你可以直接给他那个用户名和密码。
  • Database Administrators 可能是这个问题更好的地方。
  • 我同意@Barmar - 这与代码无关。对于网络的这个区域来说,它太宽泛了。
  • Barmar:不,没有这样的用户。只有一个 MySQL 用户名可以访问所有内容,我需要我的新用户只能查看 MySQL 服务器上众多数据库中的一个。我已经并且将无权创建任何新的 MySQL 用户名。

标签: mysql database phpmyadmin administration


【解决方案1】:

PMA 对此有一个配置。

$cfg['Servers'][$i]['only_db']

在文档中了解它:https://docs.phpmyadmin.net/en/latest/config.html

但这不会限制用户的权限。它只使用户界面向用户显示有限的数据库子集。如果他们知道其他一些数据库的名称(或者可以从 INFORMATION_SCHEMA.SCHEMATA 查询它们),他们仍然可以访问这些数据库。

如果您只想对少数数据库强制执行权限,则必须创建一个不同的 MySQL 用户并使用 GRANT 限制他们的权限。


你的cmets:

听起来您需要将 MySQL 凭据存储在 PMA 配置文件中(并将 $cfg['Servers'][$i]['auth_type'] 设置为“config”)。然后,您可以使用 Apache HTTP 身份验证来限制对 PMA 站点(或目录)的访问,并且可以在 Apache 级别创建多个用户凭据。

【讨论】:

  • 谢谢,这实际上可能足以满足我的需要。我将对其进行测试并将结果写在这里。 :)
  • 不,我意识到实际上这还不够。我无法为我的新用户提供 MySQL 的真实用户名和密码。我需要创建一个单独的用户名和密码之类的东西,我的新用户将通过它登录到 phpMyAdmin。然后 phpMyAdmin 本身会使用“真实”的 MySQL 用户名和密码连接到 MySQL 服务器,但它只会向我的用户显示服务器上众多数据库中的一个指定数据库。
【解决方案2】:

phpMyAdmin 不是这样设计的;它使用 MySQL 身份验证结构,没有施加任何额外的登录限制。

您的部分要求(不共享实际的用户名和密码)可能会通过使用配置或signon authentication method 来解决,但这仍然不会对用户施加任何额外的限制,因此他们会拥有与您的用户帐户相同的访问权限。

很遗憾,如果您无法创建另一个用户帐户,那么如果不授予他们相同级别的访问权限,就很难共享该帐户。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-15
    • 2015-05-11
    • 2020-03-05
    • 2022-09-27
    • 2021-09-18
    相关资源
    最近更新 更多