限制来自localhost的MySQL连接以提高安全性

Dar*_*den 24 mysql database localhost

我听说任何知道我的MySQL用户名和密码的人都可以访问它,即使它只是在监听localhost.

假设我的信息如下:

USER: root
PASS: 123456
Host: LOCALHOST (only)
Run Code Online (Sandbox Code Playgroud)

那里(本地)的任何人都可以访问它吗?

ajt*_*rds 46

如果限制从远程主机访问您的用户名和密码,则某人将无法从外部访问数据库.

您还可以将防火墙配置为仅允许从localhost计算机到3306(MySQL默认端口)的流量.

更新

要设置您的用户,以便他们只能通过LOCALHOST访问:

GRANT ALL PRIVILEGES ON *.* TO db_user @'localhost' IDENTIFIED BY 'db_passwd';
GRANT ALL PRIVILEGES ON *.* TO db_user @'127.0.0.1' IDENTIFIED BY 'db_passwd';
Run Code Online (Sandbox Code Playgroud)

另外,将MySQL服务器绑定到本地地址.您可以通过编辑以下[mysqld]部分来执行此操作my.cnf:

[mysqld]
bind-address = 127.0.0.1
Run Code Online (Sandbox Code Playgroud)

  • 绑定地址设置应该在my.cnf或my.ini的`[mysqld]`部分.从[手册](http://dev.mysql.com/doc/refman/5.7/en/server-options.html):"mysqld从[mysqld]和[server]组中读取选项." (3认同)

Ami*_*Ami 5

您可以在防火墙或 MySQL 本身内阻止对 MySQL 的直接访问,但最有可能被黑客攻击的方式是通过不安全的 Web 应用程序 - 在这种情况下,攻击者很可能能够读取您的数据库登录信息并从服务器。

因此,请确保您的应用程序安全 - 保持所有内容更新,不允许文件上传,如果您有多个帐户,请使用 suPHP 等。

如果您限制 mysql 应用程序,请按照以下步骤操作:

1.您可以只阻止端口 3306。如果站点位于同一服务器上,那么它仍然可以使用 localhost 作为主机名来访问数据库。

2.只需将“bind-address = 127.0.0.1”添加到 my.cnf 文件的“[mysqld]”部分,以限制仅访问本地主机。

大多数人都使用这种类型的限制。


小智 5

这是我遇到的一个较旧的问题,但是如果Darkeden运行phpMyAdmin或类似的程序,则任何人都可以使用有效的MySQL凭据登录到该问题。

如果它遭到破坏,则除了限制连接外,还要更改所有密码。

  • @verdammelt我相信史蒂夫说这是自2012年以来的一个更老的问题(整个主题),但无论如何,史蒂夫正在2015年回答。 (2认同)