当我无法创建新的MySQL用户时,如何让某人只访问某些MySQL表?

时间:2018-03-08 00:30:24

标签: mysql database phpmyadmin administration

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

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

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

  3. 因此,我正在考虑创建一个掩盖用户名和密码(凭证可能存储在某个表中,甚至可以直接存储在PMA周围的PHP中),我的某人可以登录到PMA。

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

  5. 这在某种程度上是可以实现的吗?谢谢!

2 个答案:

答案 0 :(得分:1)

PMA有此配置。

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

在文档中阅读:https://docs.phpmyadmin.net/en/latest/config.html

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

如果要仅对少数数据库强制执行权限,则必须创建一个独特的MySQL用户并使用GRANT限制其权限。

重新评论:

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

答案 1 :(得分:0)

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

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

不幸的是,如果您无法创建其他用户帐户,则在不给予相同级别访问权限的情况下共享帐户将会很困难。