我正在使用MySQL和一个连接到数据库的Web服务来读取一些值。
Web服务和数据库位于同一服务器上。
我想通过服务器的公共静态IP和MySQL的端口拒绝访问数据库。
这意味着只允许通过localhost
,访问数据库,以便只有网络服务可以连接到它,如何操作?我应该在MySQL中使用什么配置?
答案 0 :(得分:3)
不可能将mySQL的访问限制为特定的应用程序。
但是,您可以创建一个仅限webservice
连接的用户帐户(例如名为127.0.0.1
) - 据我所知,这是您可以做的最好的,并且应该完全足够。
答案 1 :(得分:2)
无法仅限制对Web服务的访问。您可以将其限制为仅在同一主机上运行的应用程序。要执行此操作,请创建一个主机为127.0.0.1
或localhost
的新用户也应该可以使用。您可以以图形方式或通过命令行执行此操作:
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
这会拒绝任何未列入白名单的内容访问守护程序。