【问题标题】:Can you hide tables from a MySQL user in phpMyAdmin?您可以在 phpMyAdmin 中对 MySQL 用户隐藏表吗?
【发布时间】:2010-03-12 19:50:38
【问题描述】:

我有一个 MySQL 用户添加到我想阻止查看某些表的数据库中。

我可以通过 MySQL 限制他们的权限,阻止他们运行像 DROP 或 ALTER 这样的语句。但是是否可以阻止他们查看 phpMyAdmin 中的某些表?

如果没有 MySQL 权限来控制这个(我不认为会有),phpMyAdmin 中是否有允许这个的配置?

我知道这里的一种解决方法是将表移动到未添加它们的新数据库中。这不是我的应用程序的选项。

【问题讨论】:

    标签: mysql phpmyadmin


    【解决方案1】:

    是的,您可以在 phpmyadmin 中隐藏特定数据库。
    为此,只需在您的网络服务器根目录或放置它的位置的 phpmyadmin 目录中打开 config.inc.php。或搜索 config.inc.php
    如果你想隐藏 information_schemamysql 在后面添加这一行:

    $cfg['Servers'][$i]['extension'] = 'mysql';
    $cfg['Servers'][$i]['hide_db'] = '^information_schema|mysql$';
    

    就是这样。

    【讨论】:

    • 谢谢,这对我有帮助!
    【解决方案2】:

    您可以将表移动到另一个数据库,然后将用户帐户限制为仅访问具有公共表的 1 个数据库。试图修改 phpmyadmin 将是一个巨大的错误,用户可以只编写一个自定义查询来访问这些表,这是一个非常简单的 hack。

    这必须在数据库端完成,否则绝对没有意义。 SE-Postgresql 是我所知道的唯一一个允许逐表权限的项目。这是唯一可以做到这一点的数据库,因为非常很少有人需要这个功能。

    【讨论】:

    • MySQL/phpMyAdmin 具有逐表权限。您可以将其设置为用户无法从表中进行选择。正如 Rook 所说,防止用户知道该表存在的唯一方法是将该表放入用户无法访问的数据库中。
    • 此外,您可以阻止用户在 PhpMyAdmin 中执行 SQL 查询,并阻止从外部连接访问服务器。没有真正的理由不能以 PhpMyAdmin 实现设计工具和附加功能的方式完成。
    【解决方案3】:

    phpMyAdmin 作为某个 MySQL 用户连接到数据库。如果该用户对给定的表没有任何权限,则没有 phpMyAdmin 用户可以访问该表。这当然适用于所有 mypMyAdmin 用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-28
      • 2014-12-10
      • 2020-01-22
      • 2017-02-02
      • 2010-12-03
      • 1970-01-01
      • 2020-02-15
      • 1970-01-01
      相关资源
      最近更新 更多