Mac OS X에서 실행되는 MySQL 서버에 원격으로 액세스 할 수 없습니다


11

Mac OS X Maverick을 실행하는 업무용 컴퓨터에서 MySQL 서버를 실행하고 있습니다. Mac OS Maverick이있는 가정용 컴퓨터에서 액세스하고 싶습니다.

터미널에서 1 탭에 있으면 작업 컴퓨터에 ssh하고 ssh 세션을 유휴 상태로 두지 않고 다른 탭에서 MySQL 서버에 액세스 할 수 있습니다.

그러나 ssh 세션을 실행하지 않으면 다음과 같은 오류가 발생합니다.

오류 2003 (HY000) : 'SERVER_IP_ADDRESS'에서 MySQL 서버에 연결할 수 없습니다 (60).

my.cnfbind-address를 주석 처리하거나 할당하여 서버에서 파일 을 수정하려고 시도했지만 0.0.0.0작동하지 않습니다.

왜 그런가요? 클라이언트에서 ssh를 실행하지 않고도 원격 액세스를 허용하도록 서버를 구성하려면 어떻게해야합니까? 누군가 도와주세요?


원격 OS X에서 실행되는 PostGIS와 동일한 문제가 있습니다 ... ssh하나의 탭에서 열려 있을 때 데이터베이스에 연결할 수 있지만 그렇지 않으면 그렇지 않습니다. 문제는 원격 서버에 로그인하지 않은 상태에서 데이터베이스 서버 프로세스가 일시 중지되었거나 실행되고 있지 않다는 것입니다.
andybega

답변:


20

나는 최근에 Homebrew로 업데이트 된 MySQL 5.7을 사용하는 OSX Yosemite 에서이 오류에 대해 내 머리를 두드리고 있습니다. StackOverflow 및 다른 곳에서 제안한 내용에 따라 my.cnf지정된 파일을 모두 추적했습니다 bind-address=0.0.0.0. 난 제거하고 지침에 따라 MySQL을 다시 설치 한 후 사용하여 다시 설치 brew install mysql. 여전히 원격 연결이 허용되지 않습니다.

내가 달릴 때까지 아니었다 ps -ax | grep mysql(따라서 어떤 무시하고 바인드 주소가 발사 명령에 전달되는 것을 발견 my.cnf좀 더 파고 발견하는 것이 파일) 브루 기본적으로 127.0.0.1에 MySQL의 결합 것을 .

편집 ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist하여 내 문제 --bind-address=127.0.0.1--bind-address=0.0.0.0해결했습니다 (후자는 개발 시스템이 아닌 경우 특정 IP 주소로 변경해야 함).

나는 이것이 내가 상담 한 대부분의 리소스가 부족한 중요한 정보라고 생각하므로 여기에 게시하면 다른 사람을 도울 것입니다!

편집 :LeandroCR가 실행 코멘트에 표시된 brew services restart mysql다시 MySQL의 신비 거부 연결로 이어지는 기본 하나 LaunchAgents에서 PLIST 파일을 덮어 쓰게됩니다. 내가 처음 쓴 것보다 더 나은 조언은 다음과 같습니다.

  1. 편집 /usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist및 교체 --bind-address=127.0.0.1와 함께 bind-address=*또는 --bind-address=0.0.0.0( 바인드 주소에 MySQL의 설명서를 참조하십시오 )
  2. 다음을 사용하여 mysql을 다시 시작하십시오. brew services restart mysql

그런 다음 MySQL은 로컬이 아닌 연결을 계속해서 다시 설치해야 할 때까지 계속 받아 들여야합니다.

편집 (2019 년 9 월) Timothy Zorn 은 Homebrew를 통해 설치 및 실행되는 MySQL 8.x에서 더 이상이 문제가 발생하지 않으므로 2016 년에 작성된 위의 대답은 5.x에만 관련 될 수 있다고 지적합니다.


3
또 다른 팁 : $ brew 서비스를 실행 중이면 mysql을 다시 시작하면 매번 LaunchAgents에서 plist 파일이 정리됩니다. 변경 사항을 유지하려면 편집 /usr/local/Cellar/mysql/<yourversion>/homebrew.mxcl.mysql.plist-Emma 감사합니다 !!!
LeandroCR

을 사용하여 mysql 5.6을 설치 brew install mysql56했으며 ~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist/usr/local/Cellar/mysql56/5.6.32/homebrew.mxcl.mysql56.plist파일을 모두 변경했습니다 . 그러나 여전히을 통해 mysql을 시작할 때 mysql.server startps 명령은 bind-address=127.0.0.1. 편집 할 다른 파일이 있습니까?
xi.lin

@ xi.lin 알다시피 LaunchAgent를 mysql.server start무시하므로 다른 곳에서 설정을 가져옵니다. 의 설정을 사용하려면 plist아마 다음을 사용해야합니다.brew services restart mysql
Emma Burrows

@EmmaBurrows mysql brew services restart mysql출력 Successfully started (label : homebrew.mxcl.mysql)을 사용하지만 여전히 주소는 127.0.0.1 입니다. 사실은 내가 찾을 couldnot homebrew.mxcl.mysql.plist대신 데의homebrew.mxcl.mysql56.plist
xi.lin

1
현재로서는 더 이상 작동하지 않습니다. mysqld_safe나를 위해 실행되는 명령 에는 없습니다 bind_address. 대신에 지정되어 /usr/local/etc/my.cnf있습니다.
Timmmm

6

실행 locate my.cnf파일을 발견/usr/local/etc/my.cnf

  1. 해당 파일을 편집하고 설정 bind-address = 0.0.0.0
  2. mysql을 다시 시작하십시오 : brew services restart mysql

5

'%'와일드 카드 로 원격 액세스 할 사용자를 생성하고 DB에 대한 권한을 부여 해야합니다 .

1 단계:

my.cnf ( /server/9107/how-do-i-find-where-mysql-is-loading-its-config-from )에서 바인드 주소를 주석 처리하십시오.

# bind-address        = xxx.xxx.xxx.xxx

그리고 MySQL 서버를 다시 시작하십시오.

2 단계:

그런 다음 사용자에게 원격 액세스 권한을 부여해야합니다.

GRANT ALL ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypass';

원격 연결을 활성화하는 방법을 살펴보십시오 .


이전 에이 설정을 시도했지만 (바인드 주소 주석 처리) 작동하지 않았습니다. 사용자를 만들고 모든 권한을 부여했습니다. mysql> show grants for 'home'; | Grants for home@% | GRANT ALL PRIVILEGES ON *.* TO 'home'@'%' IDENTIFIED BY PASSWORD '...' WITH GRANT OPTION |
chepukha

방화벽이 있습니까? 그렇다면 비활성화하십시오.
압둘 마나프

예, 방화벽이 꺼져 있으면 서버에 액세스 할 수 있습니다. 그러나 방화벽을 완전히 해제하지 않고 SQL 서버에 대한 원격 액세스를 허용하도록 방화벽을 구성 할 수 있습니까? 서버의 방화벽 설정에서 mysqld 를 "수신 연결 허용"으로 설정했습니다
chepukha

같은 컴퓨터에 SQL Server도 설치되어 있습니까?
압둘 마나프

네 저도 그렇습니다. 같은 컴퓨터에 SQL 서버와 방화벽이 있습니까?
chepukha

0

iptables를 iptables로 점검하십시오 -L

IP가 없으면 추가하십시오.

Ubuntu ADD IP가 액세스를 허용하는 경우 :

iptables -A ALLOWIN -s 192.168.1.XX/32 ! -i lo -j ACCEPT
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.