mysql 서버가 로컬이 아닌 연결 요청을 허용하지 않지만 여전히 tcp 포트를 수신하는 이유는 무엇입니까?

mysql 서버가 로컬이 아닌 연결 요청을 허용하지 않지만 여전히 tcp 포트를 수신하는 이유는 무엇입니까?

기본 설정의 mysql 서버는 컴퓨터의 포트에서 수신 대기합니다.

$ 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

다른 컴퓨터에서 mysql 서버에 연결할 수 없습니다.

$ mysql  --user=root --host=ocean --password test
Enter password: 
ERROR 1130 (HY000): Host 'olive.fios-router.home' is not allowed to connect to this MySQL server

이 두 가지 모순된 결과를 어떻게 이해합니까?

mysql 서버가 연결 요청을 받았지만 거부합니까?

로컬이 아닌 연결 요청을 허용하지 않는 경우 왜 TCP 포트에서 수신 대기합니까?

감사해요.

답변1

이는 MySQL이 사용자를 사용자로 취급하기 때문입니다. MySQL에서는 다음과 같이 작성된 사용자+호스트 조합에 권한을 부여합니다 user@host.

아래 예시는 각각 다릅니다.

GRANT ALL PRIVILEGES ON db.* TO 'user1'@'%';
GRANT ALL PRIVILEGES ON db.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON db.* TO 'user1'@'192.168.1.97';

각 사용자+호스트 조합은 서로 다른 비밀번호를 가질 수 있습니다(...추가된 경우)IDENTIFIED BY 'your-password';

더 많은 예와 더 나은 설명을 찾을 수 있습니다.MySQL GRANT 문서에서

답변2

글쎄요, 대신 질문을 반복하신 것 같습니다원본 편집.

bind-address다른 질문에 설명된 대로 편집 한 경우, 서비스는 이 매개변수에 구성된 IP 주소 이외의 IP 주소를 수신해서는 안 됩니다.

둘째, MySQL 애플리케이션 수준 액세스도 제공해야 하므로 이 서버에 연결할 수 없습니다.

원격 서버의 로컬 셸에서 mysql프롬프트에 액세스하여 다음 명령을 실행합니다.

`GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';`

MySQL에는 네트워크 구성과 애플리케이션 수준 인증/권한이라는 두 가지 기본 사항이 누락된 것 같습니다. 이 기술을 더 자세히 연구해 보시기 바랍니다.

Google에서 더 자세히 알아보세요 ERROR 1130 (HY000): Host is not allowed. 이 검색의 첫 번째 결과가 StackExchange로 연결된다는 사실을 알면 놀랄 것입니다. 여기:오류 1130(HY000): '' 호스트는 이 MySQL 서버에 연결할 수 없습니다.

관련 정보