禁止特定 mysql 用户交互式登录

禁止特定 mysql 用户交互式登录

我想为不同的网站创建一些 mysql 用户,但不允许他们进行交互式连接。

如果恶意用户获取了网站的 mysql 登录凭据,则从终端到服务器建立连接相当简单,但将 PHP 脚本上传到服务器则是另一回事。我认为这种限制是不必要的。

简而言之,我如何才能禁止特定用户的交互式连接?

答案1

你不能。MySQL 无法区分 CLI 会话和来自库的连接,或者至少没有权限模型来处理这种差异。

一般来说,你必须尽可能具体地设定权限。允许来自特定 Web 服务器的连接应该仅限于该服务器。这可以大大减少攻击面。

此外,如果可能的话,请不要mysql在该服务器上安装 CLI 程序,以进一步限制攻击面。

答案2

通常,您可以用两种方式之一或两种方式处理这个问题。您可以设置授权位置,以仅允许用户从您希望用户连接到的 IP、IP 范围或主机名进行连接

例如

 GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'127.0.0.0.1';

仅授予从本地主机选择和插入的权限。或者说您的 Web 服务器位于单独的 vlan 上

 GRANT SELECT, INSERT ON mydb.* TO 'someuser'@'10.128.10.%';

这将允许从 10.128.10.0/24 选择并插入

您还可以关闭 mysql 端口的防火墙,从而只允许来自您希望连接的主机的 mysql 连接。

相关内容