如何为多个用户配置 phpMyAdmin - 每个用户只能访问他们的数据库

Posted

技术标签:

【中文标题】如何为多个用户配置 phpMyAdmin - 每个用户只能访问他们的数据库【英文标题】:How to configure phpMyAdmin for multiple users - each with access to their database only 【发布时间】:2011-04-09 17:16:32 【问题描述】:

我想将 phpMyAdmin 配置为能够接受几种不同的用户帐户登录之一。每个用户都将被分配一个特定的数据库,并且只能访问该数据库。

phpMyAdmin 的默认配置是一个超级用户,例如root 可以访问服务器上的每个数据库。

我需要能够让人们访问某些数据库,但不是全部。

你也可以

    提供解决方案 用下面的现有解决方案评论我的发现,必须对其进行调整才能正常工作

以下解决方案有效 - 有一个额外的步骤(如下所述): http://alandoyle.com/tutorials/configuring-phpmyadmin-for-multiple-users/

额外的步骤是首先假设你已经设置了一个 mysql 用户和密码,例如'anotheruser' 并将此用户与数据库相关联 - 即将此用户添加到可以访问该数据库的用户列表中。

第二个附加步骤是再次运行上述解决方案页面中引用的SQL查询块(在已经运行一次之后,按照原文中的说明,几乎和引用的一样(显然要确保使用正确的密码) )) 但这次是针对您要授予访问权限的实际用户。因此,如果您的用户名是“anotheruser”,那么您将 pma 替换为 anotheruser,并将 pmapassword 替换为 anotheruser 的密码。

因此,连同所有说明一起,这似乎有效。这样看来,每次添加新用户时,都必须为新用户运行相同的 SQL 查询。但我从解决方案中得到的印象是,这是一个一次性的 SQL 查询,支持添加任意数量的用户并通过 phpmyadmin ui 将它们添加到数据库中。想法?

关于 SO 的其他解决方案(但不是我需要的):

有没有像 phpMyAdmin 这样的工具可以配置为只访问一个数据库?:Is there a tool like phpMyAdmin which can be configured to access just a single database? 如何配置 config.inc.php 在 phpmyadmin 中有一个登录表单:how to configure config.inc.php to have a loginform in phpmyadmin

【问题讨论】:

这不是超级用户的问题吗? 我之前没有做任何特别的努力就完成了这项工作......我只是创建了一个数据库用户并只允许他们访问单个数据库。 @FUZxxl 我认为这是一个堆栈溢出问题,因为它是一个开发人员/程序员问题。超级用户问题适用于(高级、初学者等)计算机的end 用户 - 以某种方式使用 计算机但不用于开发的人活动,或者他们正在使用程序,不需要开发/编程知识的问题。 @Fosco - 但是当我尝试以该用户身份登录 phpmyadmin 时,我收到标准登录失败消息。使用 phpmyadmin 登录时,只有 root / 我的默认管理用户有效。请详细说明如何通过 phpmyadmin 设置用户/数据库访问。谢谢。 @Rob 你的 config.inc.php 中的 'auth_type' 是什么?我使用 cookie 身份验证。 【参考方案1】:

使用这个

  $cfg['Servers'][$i]['auth_type'] = 'cookie';

代替

  $cfg['Servers'][$i]['auth_type'] = 'config';

在您的 config.inc.php 中并重新启动服务,然后将为所有用户启动身份验证过程,他们可以根据那里的授权进行工作。

【讨论】:

我会检查一下并报告回来。感谢您的意见,抱歉这么久才回复。【参考方案2】:

如果你想添加一个定义了用户和密码的不同主机,你可以在 config.inc.php 中添加下一行

第一个参数auth_type元素设置为cookie

$cfg['Servers'][$i]['auth_type'] = 'cookie';

第二个连接改变为配置(增加 i 变量)

$i++;
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'user';
$cfg['Servers'][$i]['password'] = 'password';
$cfg['Servers'][$i]['host'] = 'anotherhost';
$cfg['Servers'][$i]['connect_type'] = 'tcp';

【讨论】:

以上是关于如何为多个用户配置 phpMyAdmin - 每个用户只能访问他们的数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何为每个用户或系统范围配置 Ivy 缓存目录?

如何为多个 IAM 用户设置 S3 策略,以便每个人只能访问他们的个人存储桶文件夹?

当使用多个不同长度和多个特征的时间序列时,如何为 LSTM 准备数据?

如何为每个 Android 应用程序/进程使用多个 MapActivity/MapViews

如何为 mysql 添加值:端口的空值

如何为Mercurial最佳地配置中央存储库/多个中央存储库?