为什么mysql服务器接受非本地请求,而postgresql服务器不接受?

为什么mysql服务器接受非本地请求,而postgresql服务器不接受?

默认配置下,为什么mysql服务器接受非本地请求,而postgresql服务器不接受?

$ nmap -p0-65535 192.168.1.97

Starting Nmap 7.60 ( https://nmap.org ) at 2019-03-20 14:34 EDT
Nmap scan report for ocean.fios-router.home (192.168.1.97)
Host is up (0.00036s latency).
Not shown: 65533 closed ports
PORT      STATE SERVICE
22/tcp    open  ssh
3306/tcp  open  mysql
33060/tcp open  mysqlx

Nmap done: 1 IP address (1 host up) scanned in 4.50 seconds

netstat告诉我原因吗?

$ sudo netstat -ap | grep postg
tcp        0      0 localhost:postgresql    0.0.0.0:*               LISTEN      1567/postgres       
udp        0      0 localhost:57504         localhost:57504         ESTABLISHED 1567/postgres       
unix  2      [ ACC ]     STREAM     LISTENING     27116    1567/postgres        /var/run/postgresql/.s.PGSQL.5432

$ sudo netstat -ap | grep mysql
tcp6       0      0 [::]:mysql              [::]:*                  LISTEN      23683/mysqld        
tcp6       0      0 [::]:33060              [::]:*                  LISTEN      23683/mysqld        
unix  2      [ ACC ]     STREAM     LISTENING     1169294  23683/mysqld         /var/run/mysqld/mysqld.sock
unix  2      [ ACC ]     STREAM     LISTENING     1169513  23683/mysqld         /var/run/mysqld/mysqlx.sock
unix  2      [ ]         DGRAM                    1169211  23683/mysqld  

如何配置mysql像postgresql一样工作,以便它运行但不接受非本地请求?

谢谢。

答案1

此类任务不需要防火墙。请注意,我并不是说防火墙没有用,而是您只需禁用所有地址的listen( 0.0.0.0)即可。最小特权您的软件可以在哪些地址上等待连接。

PostgreSQL 和 MySQL 是不同的软件,因此可以具有不同的网络、用户访问、安装路径、数据库文件路径、支持的文件系统等默认行为。您不能仅仅因为它们是数据库而将它们关联起来。其他可能影响默认配置的事情是您的发行版中此软件包的负责人决定软件应使用的默认配置。

MySQL 默认监听所有网络地址 ( 0.0.0.0) ,除非发行版进行了不同配置,如上所述。

回到你的问题,要使 MySQL 仅回答本地主机,请访问它的配置文件(大多数情况下为/etc/my.cnf/etc/mysql/my.cnf)并添加或编辑以下行:

bind-address = 127.0.0.1

之后,重新启动 mysql 服务(取决于发行版,一般为systemctl restart mysqlsystemctl restart mysqld

使用命令仔细检查ss

ss -lntu | grep mysql

相关内容