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

이 유형의 작업에는 방화벽이 필요하지 않습니다. 방화벽이 쓸모없다고 말하는 것이 아니라 단순히 0.0.0.0모든 주소에 대해 listening( )을 비활성화할 수 있다는 점에 유의하십시오.최소 권한소프트웨어가 연결을 기다릴 수 있는 주소는 무엇입니까?

PostgreSQL과 MySQL은 서로 다른 소프트웨어이므로 네트워크, 사용자 액세스, 설치 경로, 데이터베이스 파일 경로, 지원되는 파일 시스템 등에 대해 서로 다른 기본 동작을 가질 수 있습니다. 단지 데이터베이스라는 이유만으로 연관시킬 수는 없습니다. 기본 구성에 영향을 미칠 수 있는 다른 사항은 배포판에서 이 패키지를 담당하는 사람이 소프트웨어에서 사용해야 하는 기본 구성을 결정한다는 것입니다.

0.0.0.0위에서 설명한 대로 배포가 다르게 구성되지 않는 한 MySQL은 기본적으로 모든 네트워크 주소( )를 수신합니다 .

질문으로 돌아가서 MySQL이 localhost에만 응답하도록 하려면 해당 구성 파일( /etc/my.cnf또는 대부분의 경우 /etc/mysql/my.cnf)에 액세스하고 다음 줄을 추가하거나 편집하십시오.

bind-address = 127.0.0.1

그런 다음 mysql 서비스를 다시 시작합니다(배포판에 따라 일반적으로 systemctl restart mysql또는 systemctl restart mysqld).

다음 명령을 사용하여 다시 확인하십시오 ss.

ss -lntu | grep mysql

관련 정보