기본 설정의 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 서버에 연결할 수 없습니다.