【问题标题】:Isolating php from accessing other mysql databases隔离php访问其他mysql数据库
【发布时间】:2016-09-20 02:17:38
【问题描述】:
我发现 apache2 能够在虚拟主机中使用此规则“隔离”php 访问其他未指定的目录:
php_admin_value open_basedir /path/to/your/virtualroot:/some/other/path
现在我还需要将该特定虚拟主机的 mysql 访问限制为特定数据库。我会避免只使用用户/密码来保护它们以避免暴力破解。
有解决办法吗?
【问题讨论】:
标签:
php
mysql
apache2
virtualhost
【解决方案1】:
不,您只能限制每个用户。例如,您可以通过 mysql 用户限制访问,并使用域的特定用户(/VirtualHost)。
我通常创建一个 mysql 用户并授予它访问所有以该用户名作为前缀的数据库的权限:
CREATE USER 'someuser'@'localhost' IDENTIFIED BY 'somepass';
GRANT ALL ON `someuser\_%`.* to `someuser`@`localhost`;
所以someuser 将拥有对以someuser_ 开头的所有数据库的完全访问权限。 (例如:someuser_wordpress、someuser_drupal 等...)。用户只能看到数据库,他们有权访问。
您也可以限制对单个数据库的访问:
GRANT ALL ON `databasename`.* to `someuser`@`localhost`;