我使用 MySQL 和 PHP 创建了一个家庭 Apache 服务器。我刚刚创建了一个网站,我希望可以公开访问该网站,主要用于我的实验。然而我刚刚意识到我的 MySQL 服务器在端口 3306 上运行,通常我的 PHP 使用用户名和无密码连接到本地主机上的数据库。任何其他远程 PHP 脚本都不能连接到我的数据库并吸走所有存储的数据吗?这不会使我的网站处于危险之中吗?如何停止与数据库服务器的远程连接?我只希望我的服务器上的应用程序(或我批准的应用程序)访问我的数据库。如果措辞不好,请原谅我,我在 Google 上找不到任何有用的文章。
最佳答案
您可以按照评论中的建议,使用 bind-address = 127.0.0.1
配置选项限制 MySQL 服务器仅监听本地主机连接。
如果您只想对此特定用户进行更改,您可以使用以下查询检查授权:
SHOW GRANTS FOR CURRENT_USER;
如果它不仅限于localhost
,您可以限制它:
GRANT ALL PRIVILEGES ON *.* TO <username> @'localhost' IDENTIFIED BY '<password>';
GRANT ALL PRIVILEGES ON *.* TO <username> @'127.0.0.1' IDENTIFIED BY '<password>';
一般来说,我建议添加密码,因为您可以在将来进行一些其他配置更改或使用同一 MySQL 服务器运行其他应用程序。安全总比后悔好。
关于php - 防止数据库被外部访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37788190/