Ubuntu 20.04 LTS에서만 MySQL 서버를 로컬 호스트에 바인딩하도록 하는 방법은 무엇입니까?

Ubuntu 20.04 LTS에서만 MySQL 서버를 로컬 호스트에 바인딩하도록 하는 방법은 무엇입니까?

기본 MySQL 설치와 함께 Ubuntu 20.04.3 LTS에서 MySQL 서버의 적절한 패키지 관리 버전을 사용합니다.

netstatMySQL 서버가 공개 IPv6 인터페이스에 바인딩되어 있음을 보여줍니다.

tcp6       0      0 :::33060                :::*                    LISTEN      2485/mysqld
tcp6       0      0 :::3306                 :::*                    LISTEN      2485/mysqld

그러나 /etc/mysql/mysql.conf.d/mysqld.cnf다음을 표시합니다(간결성을 위해 주석 처리된 줄이 제거됨).

[mysqld]
user            = mysql

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address            = 127.0.0.1
mysqlx-bind-address     = 127.0.0.1

MySQL과 같은 승인되지 않은 포트에 대한 외부 액세스를 거부하는 iptables 및 업스트림 방화벽 규칙이 있지만 MySQL 자체가 구성 파일에 따라 시스템의 올바른 인터페이스에 바인딩되는 것을 선호합니다.

올해 20.04.3으로 업그레이드된 다른 시스템에서는 구성 파일이 사실상 동일하며 다음을 netstat보여줍니다.

tcp        0      0 127.0.0.1:33060         0.0.0.0:*               LISTEN      1349/mysqld
tcp        0      0 127.0.0.1:3306          0.0.0.0:*               LISTEN      1349/mysqld

답변1

권한을 /etc/mysql.cnf0644로 변경하여 문제를 해결했습니다. 해당 파일이 세계 쓰기 가능/실행 가능으로 표시되면 MySQL 서버가 그것을 좋아하지 않는 것 같습니다. 그것은 0777로 표시되어 있었는데 나는 확실히 그렇게 하지 않았습니다. apt 패키지 에서 그런 식으로 시스템에 설치되었습니다 mysql-server.

이는 아마도 현재(2021년 12월 현재) apt를 통해 MySQL을 설치하고 실수로 포트 3306을 전 세계에 공개하는 Ubuntu Server 20.04.3 LTS 시스템이 많이 있다는 것을 의미합니다. 기본적으로 루트 비밀번호가 없기 때문에 MySQL이 원격 시스템에서 빠르게 손상될 수 있음을 의미할 수도 있습니다.

관련 정보