php - 防止数据库被外部访问

标签 php mysql apache

我使用 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/

相关文章:

php |将数组转换为 FIND_IN_SET

java - 如果已定义(不为空),如何使用自定义处理器?

python - 我目前在 Django 中提供我的静态文件。我如何使用 Apache2 来执行此操作?

php - 在 PHP 方法调用中,可选参数是否必须位于参数列表的末尾?

php - 我可以仅通过数据中的字母和数字查询列吗?比如 preg_replace

php - MOODLE 从数据库读取错误

php - 从指定刚刚注册的用户获取数据

javascript - 循环中 document.getElementById 的结果保持不变

mysql - 如何在计算机之间更新mysql表

java - 如何使用 Tomcat 8.0 配置 NetBeans 7.3.1