
기본 MySQL 설치와 함께 Ubuntu 20.04.3 LTS에서 MySQL 서버의 적절한 패키지 관리 버전을 사용합니다.
netstat
MySQL 서버가 공개 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.cnf
0644로 변경하여 문제를 해결했습니다. 해당 파일이 세계 쓰기 가능/실행 가능으로 표시되면 MySQL 서버가 그것을 좋아하지 않는 것 같습니다. 그것은 0777로 표시되어 있었는데 나는 확실히 그렇게 하지 않았습니다. apt 패키지 에서 그런 식으로 시스템에 설치되었습니다 mysql-server
.
이는 아마도 현재(2021년 12월 현재) apt를 통해 MySQL을 설치하고 실수로 포트 3306을 전 세계에 공개하는 Ubuntu Server 20.04.3 LTS 시스템이 많이 있다는 것을 의미합니다. 기본적으로 루트 비밀번호가 없기 때문에 MySQL이 원격 시스템에서 빠르게 손상될 수 있음을 의미할 수도 있습니다.