Mac OS X의 MySQL Workbench를 사용하는 원격 MySQL 서버의 포트 3306에 연결할 수 없습니다


1

나는 원격으로 MySQL에 접근하고 싶다 :

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

Workbench가 연결에 실패했을 때, 나는 ping과 telnet을 사용하여 다음과 같이 보았다.

Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ ping 192.168.0.21
PING 192.168.0.21 (192.168.0.21): 56 data bytes
64 bytes from 192.168.0.21: icmp_seq=0 ttl=64 time=0.274 ms
64 bytes from 192.168.0.21: icmp_seq=1 ttl=64 time=0.499 ms
^C
--- 192.168.0.21 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.274/0.387/0.499/0.113 ms
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21 3306
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 

설치하겠습니다. coreutils 사용법을 배워야 할 것입니다. netstat Mac에서는 lsof - 분명히 다르다.

그만큼 arrakis 서버가 실행 중입니다. OpenSuSE; 포트를 닫았나요?

참고 : Mac에 MySQL을 설치하지 않았습니다. 나에게 오류를 준다. ...

-------------------------------------------------- ----------------------------최신 정보

MariaDB [mysql]> 
MariaDB [mysql]> GRANT ALL ON *.* TO `thufir`@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> select host, user, grant_priv from user;
+------------+--------+------------+
| host       | user   | grant_priv |
+------------+--------+------------+
| localhost  | root   | Y          |
| linux-k7qk | root   | Y          |
| 127.0.0.1  | root   | Y          |
| ::1        | root   | Y          |
| localhost  |        | N          |
| linux-k7qk |        | N          |
| %          | cron   | N          |
| localhost  | cron   | N          |
| localhost  | custom | N          |
| %          | custom | N          |
| %          | slave  | N          |
| %          | root   | N          |
| %          | thufir | N          |
+------------+--------+------------+
13 rows in set (0.00 sec)

MariaDB [mysql]> 

3
ping은 작동하지만 텔넷이 시간 초과되면 포트가 방화벽으로 보호됩니다. 아마 들어오는 arrakis 맥에서 포트를 outpoing 가능성이 있지만 (가능성이 아니라) 차단 될 수 있습니다. 또한 종종 mysql이에 바인딩되어있다. 127.0.0.1 공격을 막기 위해 mysql 서버 설정을 수정해야한다. bind-address ).
— wurtel

1
답변을 게시했지만 그 말은 MySQL GRANT IP 주소를 사용하는 명령 192.168.0.16 하지만 너의 모든 ping 과 telnet 테스트는 192.168.0.21. 그래서 어떤 IP 주소입니까? MySQL에서 보조금을 설정할 때, 고객 IP 주소; 서버 IP 주소가 아닙니다. 내 전체 답변에 대한 자세한 내용은 "추신" 섹션에 있지만 어쩌면 문제는 단순한 / 기본적인 문제 일 수 있습니다.
— JakeGould

답변:


2

MySQL에서 네트워킹을 사용하려면 다음 두 가지 사항을 올바르게 처리해야합니다. MySQL 보조금 및 MySQL 자체에서 네트워킹을 사용할 수 있어야합니다.

MySQL 보조금 설정.

너의 GRANT 명령이 이상하게 보입니다.

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

왜 '192.168.0.16' 작은 따옴표로 묶었지만 사용자가 아닌가? 그것은 '192.168.0.16' 리터럴로 호스트에 대한 작은 따옴표를 사용합니다. 그래서 다음과 같이 해보십시오 :

GRANT ALL ON *.* TO 'thufir@192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

그러나 이와 같은 권한을 부여 할 때 두 명령 및 그들은 다음과 같이 구조화됩니다 :

GRANT USAGE ON *.* TO 'thufir@192.168.0.16' IDENTIFIED BY 'thufir';
GRANT ALL PRIVILEGES ON *.* TO 'thufir@192.168.0.16';

그리고 나서 권한을 설정 한 후에 권한 테이블을 플러시하여 새로운 권한을로드해야합니다 :

FLUSH PRIVILEGES;

그리고 너는 잘 가야한다.

MySQL 네트워킹 사용.

하지만 그건 네가 확인해 봤어. my.cnf 있을 경우 bind-address 이런 식으로 설정 :

bind-address = 127.0.0.1

그건 MySQL을 묶을거야. localhost (예 : 127.0.0.1 )를 기본값으로 사용하며 데이터베이스 서버를 네트워크에 노출하면 보안 상 위험 할 수 있으므로 MySQL의 일반적인 "out of box"보안 동작입니다. 따라서이 경우에는 네트워킹이 필요하기 때문에 다음과 같이 주석 처리해야합니다.

#bind-address = 127.0.0.1

그리고 또한 skip-networking 사용할 수 없으며 다음과 같이 주석 처리됩니다.

#skip-networking

그런 다음 새 설정을 적용하려면 MySQL 서버를 다시 시작하십시오.

추신.

이제는 MySQL이 GRANT IP 주소를 사용하는 명령 192.168.0.16 하지만 너의 모든 ping 과 telnet 테스트는 192.168.0.21. 그래서 어떤 IP 주소입니까? MySQL에서 보조금을 설정할 때, 고객 IP 주소; 서버 IP 주소가 아닙니다.

따라서 서버에 IP 주소가있는 경우 192.168.0.16 클라이언트는 IP 주소를가집니다. 192.168.0.21, MySQL GRANT 명령에서 사용해야하는 192.168.0.21 과 아니 그만큼 192.168.0.16 귀하의 모범을 보여줍니다. 어쩌면 그것이 문제일까요?


나는 내일 포스트 스크립트를 시험해야 할 것이다.
— Thufir

1
건너 뜀 네트워킹에 관하여 당신의 코멘트는 나의 문제를 해결했다, 다른 위치 및 응답에서 언급되지 않는다. 고마워
— netadictos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.