通过localhost限制对MySQL DB的访问,而不是通过IP?

时间:2010-08-17 12:09:12

标签: mysql database web-services localhost

我正在使用MySQL和一个连接到数据库的Web服务来读取一些值。
Web服务和数据库位于同一服务器上。
我想通过服务器的公共静态IP和MySQL的端口拒绝访问数据库。 这意味着只允许通过localhost访问数据库,以便只有网络服务可以连接到它,如何操作?我应该在MySQL中使用什么配置?

3 个答案:

答案 0 :(得分:3)

不可能将mySQL的访问限制为特定的应用程序

但是,您可以创建一个仅限webservice连接的用户帐户(例如名为127.0.0.1) - 据我所知,这是您可以做的最好的,并且应该完全足够。

答案 1 :(得分:2)

无法仅限制对Web服务的访问。您可以将其限制为仅在同一主机上运行的应用程序。要执行此操作,请创建一个主机为127.0.0.1localhost的新用户也应该可以使用。您可以以图形方式或通过命令行执行此操作:

CREATE USER 'webservice'@'localhost' IDENTIFIED BY 'webservicepassword';
// Grant privileges here... 
// For example, GRANT ALL PRIVILEGES ON *.* TO 'webservice'@'localhost' - but it's a far better idea to restrict access to only what it needs...

答案 2 :(得分:0)

您还可以在 TCP 层限制仅来自本地主机的 MySQL 数据库流量。我不确定这种方法与使用 MySQL 数据库权限的优缺点。

https://www.thegeekdiary.com/understanding-tcp-wrappers-in-linux/

在 /etc/hosts.allow 中,添加:

mysqld: LOCAL

这将本地主机列入白名单以访问数据库守护程序。您可以使用逗号分隔的 IP 地址和主机名列表,这些列表也是允许的。

在 /etc/hosts.deny 中,添加:

mysqld: ALL

这会拒绝任何未列入白名单的内容访问守护程序。

相关问题