【问题标题】:Hide database from user while allowing user to query it对用户隐藏数据库,同时允许用户查询它
【发布时间】:2013-03-01 17:26:45
【问题描述】:

我希望有人可以帮助我解决 mySQL / phpMyAdmin 问题。 (不知道有没有可能……)

问题来了: 我有 2 个数据库:DB1 和 DB2 我有一个用户 DB1user。该用户对 DB1 具有完全访问权,并且对 DB2 中的特定表具有选择访问权。 我希望有一种方法可以对用户隐藏 DB2。 IE。当用户键入“显示数据库;”时,我希望该用户只看到 DB1。但是,当用户输入“SELECT * FROM DB2.TABLE1;”时,他应该会看到他的查询结果。

这可能吗?可行吗?

感谢您的帮助!

【问题讨论】:

  • 如果用户对 DB2 具有选择访问权限并且权限设置正确,那么让用户看到 DB2 有什么危害?他们只能访问/修改他们有权访问的内容。
  • 确实如此。在我的例子中,用户限制访问的数据库是 phpmyadmin 这是一个家政数据库,我不一定希望用户知道它的存在,因为我不太确定这个家政数据库是什么真的商店......
  • 我认为您的答案没有您希望的答案!最好的办法是在虚拟主机中单独的数据库.. 每个客户端都在您自己的位置。 PhpMyAdmin 不是管理此类 os 问题的最佳工具,否则你有 mysql 命令行,我认为归档你想要的东西要好得多!

标签: mysql database phpmyadmin


【解决方案1】:

这两个查询会将用户限制在单个数据库中,因此用户只能查看、更新和删除该单个数据库中的表:

将 USER 替换为 MySQL 用户名

将 USERDATABASE 替换为您希望用户有权访问的单个 MySQL 数据库。

REVOKE ALL PRIVILEGES,GRANT OPTION from USER; 

GRANT ALL ON USERDATABASE.* TO 'USER';

【讨论】:

  • 但这会限制用户只能访问他的数据库... phpMyAdmin 有一个名为 phpmyadmin 的新数据库,其中包含一些内务信息和其他与 phpMyAdmin 相关的内容。只有当用户通过 phpMyAdmin 界面登录时,才会对该数据库进行查询。用户甚至不应该知道这个数据库,因此不应该在他有权访问的数据库列表中看到它。话虽如此,如果用户确实知道 phpmyadmin,他应该能够针对它运行查询。
【解决方案2】:

您是否尝试过使用 phpMyAdmin 中的“权限”页面来创建用户并限制他们对特定数据库和操作的访问?

【讨论】:

  • 是的。这就是我现在所拥有的。用户可以完全访问他的数据库,并且可以选择访问 phpmyadmin。在数据库部分(左侧)中,我看到 3 个数据库可见:DB1、information_schema 和 phmyadmin。我想在那里只看到 BD1,同时保留用户对 phpmyadmin 的访问权限。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2018-11-14
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多