我在我的服务器上设置了六个不同的站点,它们各自的数据库都链接到一个本地主机 IP。我从根目录设置的其中三个用户只能访问一个关联的数据库,但当显示数据库命令显示所有数据库时,其他三个用户只能访问。不知道这是怎么发生的。
如何使每个用户只能访问各自的数据库?必须以不同的方式设置它们,但不记得如何设置。
这是一个 drupal 多站点,最终我希望只有一个用户和密码来访问我使用 root 拥有的所有数据库,但对于 drupal 设置,每个数据库都有一个必要的设置用户和密码,在我创建单独的数据库之前,我是对一个数据库进行更改会影响其他所有数据库。因此,在我学会如何为它们添加前缀之前,我会尝试将它们分开。这重要吗?最佳实践是什么 - 我不知道。
答案1
没有特殊的做法,这完全取决于您的环境和安全考虑。当您使用 Drupal 多站点配置时,在从同一代码库运行的所有站点的管理员不是同一个人或具有高度相互信任的小团体的情况下。原因是在 Drupal 站点上拥有完全管理权限的任何人都可以通过各种方式在该站点上执行任意 PHP 代码(即使没有对该站点的 FTP 访问权限),并且可以从一个站点使用任意 PHP 代码来影响另一个站点,如果两个站点位于同一 HTTP 文档根目录中并共享相同的 Drupal 代码。
您可以在 mysql 上使用以下命令创建 mysql 用户:
mysql> CREATE USER 'www1'@'localhost' IDENTIFIED BY 'password123';
以下将允许 www1 用户访问 site1 数据库:
mysql> GRANT ALL PRIVILEGES ON site1_database.* To 'www1'@'localhost' IDENTIFIED BY 'password123';
在您的Web服务器上,您settings.php
可以为每个站点配置mysql服务器地址、数据库名称、用户名和密码。