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 하지만 너의 모든 pingtelnet 테스트는 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 하지만 너의 모든 pingtelnet 테스트는 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.