我正在寻找以下最佳解决方案:
我需要通过PhpMyAdmin或类似的工具让某人访问MySQL服务器上的一个(多个)特定数据库。
我不允许创建新的MySQL用户帐户。
因此,我正在考虑创建一个掩盖用户名和密码(凭证可能存储在某个表中,甚至可以直接存储在PMA周围的PHP中),我的某人可以登录到PMA。
PMA会使用安全存储的真实用户名和密码连接到我的MySQL服务器。但我的人永远不会看到实际的数据库用户名和密码。他只能看到并能够在我的服务器上的一个指定数据库中编辑表。
这在某种程度上是可以实现的吗?谢谢!
答案 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来解决,但是一旦用户登录,这仍然不会对用户施加任何其他限制,因此他们与您的用户帐户具有相同的访问权限。
不幸的是,如果您无法创建其他用户帐户,则在不给予相同级别访问权限的情况下共享帐户将会很困难。