답변:
여기 누군가 가 방화벽 문제 일 수 있다고 제안합니다.
나는 방금이 문제가 있었고 그것이 내 방화벽이라는 것을 알았습니다. PCTools Firewall Plus를 사용하는데 MySQL에 대한 전체 액세스를 허용하지 않았습니다. 일단 변경하면 괜찮습니다. 도움이되기를 바랍니다.
그게 될까요?
또한 여기 누군가 는 MySQL 서버가 루프백 IP (127.0.0.1 / localhost)에 바인딩되어 있기 때문에 "외부"에서 연결하는 것을 효과적으로 차단할 수 있다고 제안합니다.
이 경우 스크립트를 웹 서버에 업로드하고 (아마도 MySQL 서버를 실행 중일 수 있음) 서버 호스트를 'localhost'로 유지해야합니다.
my.cnf라는 mysql 구성 파일을 열고 "bind-address"를 찾습니다. 여기서 설정 (127.0.0.1 또는 localhost)을 라이브 서버 IP (mysql_connect 함수에서 사용중인 IP)로 바꿉니다.
이것은 문제를 확실히 해결할 것입니다.
감사
127.0.0.1
적용 가능한 곳에 바인딩하여 다른 호스트에서 직접 액세스 할 수 없도록 하는 것이 바람직 할 수 있음을 언급해야 합니다. 이것은 원격 무차별 대입 공격을 방지하고 가능한 보안 문제를 네트워크에 노출시키지 않습니다. 응용 프로그램이 동일한 컴퓨터 (매우 일반적인 호스팅 설정)에있는 경우 127.0.0.1
resp를 사용 합니다. localhost
서비스를 외부 인터페이스에 바인딩하고이를 mysql 호스트로 사용하는 것과 동일한 방식으로 작동합니다. 애플리케이션이 다른 곳에있는 경우 가능하면 내부 네트워크를 사용하십시오.
1) MySQL에 대한 원격 연결을 허용합니다. 파일 수정 :
>sudo nano /etc/mysql/my.cnf
주석 줄 :
#bind-address = 127.0.0.1
MySQL을 다시 시작합니다.
>sudo service mysql restart
2) 원격 접속을위한 사용자를 생성합니다.
>mysql -uroot -p
CREATE USER 'developer'@'localhost' IDENTIFIED BY 'dev_password';
CREATE USER 'developer'@'%' IDENTIFIED BY 'dev_password';
GRANT ALL ON *.* TO 'developer'@'localhost';
GRANT ALL ON *.* TO 'developer'@'%';
3) 제 경우에는 Ubuntu를 사용하여 Windows에서 VirtualBox 컴퓨터로 원격으로 연결해야합니다. 따라서 iptables에서 포트 3306을 허용해야합니다.
>iptables -A INPUT -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
FLUSH PRIVILEGES
새 사용자를 만든 후에 기억하십시오 .
새 슬레이브 서버를 설정할 때이 문제가있었습니다. 슬레이브 서버 IP 주소가 마스터 서버에서 누락되었습니다./etc/hosts.allow
파일 . IP 주소를 추가하고 마스터 서버에 연결할 수있게되었습니다.
hosts.allow
및 hosts.deny
을 사용 하여 액세스를 제어합니다.
이 문제가 있었고 이전 시스템 관리자가 MySQL이 실행중인 포트를 변경했습니다. MySQL Workbench는 기본 3306에 연결을 시도했지만 서버는 20300에서 실행 중이었습니다.
이 오류는 MySQL Workbench 6.3을 사용하여 Google Cloud SQL에 연결하는 동안 발생했습니다.
약간의 조사 끝에 인터넷 제공 업체가 내 IP 주소를 변경했으며 Cloud SQL에서 허용되지 않는 것으로 나타났습니다.
나는 그것을 승인하고 일하러 돌아갔다.
MySQL 워크 벤치에서 연결할 때 똑같은 오류가 발생했습니다. 해결 방법은 다음과 같습니다. 내 /etc/my.cnf 구성 파일에는 bind-address 값이 서버의 IP 주소로 설정되어 있습니다. 복제를 설정하려면이 작업을 수행해야했습니다. 어쨌든 두 가지를 수행하여 해결했습니다.
예 :
CREATE USER 'username'@'bind-address' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON schemaname.* TO 'username'@'bind-address';
FLUSH PRIVILEGES;
나에게 문제는 DNS 쿼리가 서브넷 내의 FW에 의해 차단되었다는 것입니다. 해결책은 MySQL 내에서 DNS 조회를 비활성화하는 것이 었습니다.
이 오류는 서버를 찾을 것으로 예상되는 포트에서 응답을받지 못했음을 의미합니다. 원인은 잘못된 시스템에 연결하는 것 (여러 가지 이유 중 하나)에서 서버가 예상 포트에 있지 않는 것까지 다양합니다.
/etc/mysql/my.cnf에서 서버가 바인딩 된 포트를 확인하십시오. 그것이 당신의 connect 문에있는 것과 일치합니까? 일치하는 경우 서버 자체와 클라이언트를 실행중인 컴퓨터의 명령 줄에서 mysql에 연결해보십시오. 한 곳에서 작동하고 다른 곳에서는 작동하지 않으면 방화벽 / 라우터 구성 문제가있을 수 있습니다.
ERROR 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (61)
없으면 Lost connection to MySQL server
메시지가 아닌 응답을 받게 됩니다.
제 경우에는 hosts.deny에 ALL : ALL이 있습니다. 이것을 ALL로 변경 : PARANOID가 ssh를 통해 연결할 때 내 문제를 해결했습니다.
문제는 나에게 아주 어리석은 것이었다.
AWS EC2 Ubuntu 머신에서 동일한 문제가 발생했습니다 (MariaDB는 당분간 로컬로 설치됨). 그래서 SSH 터널링을 시도했고 동일한 문제가 발생했습니다. 그래서 터미널을 통해 ssh 터널을 시도했습니다.
ssh -L13306:127.0.0.1:3306 root@ip.address -i my/private/key.pem
그리고 그것은 나에게 이렇게 말했습니다.
사용자 "root"가 아닌 "ubuntu"사용자로 로그인하십시오.
ssh 구성과 마찬가지로 ssh 사용자를 루트에서 우분투로 변경했으며 제대로 연결되었습니다.
따라서 SSH 연결 사용자를 확인하십시오.
나는 이것을 감독했고, 그래서이 시간이 너무 30 분이나 되었으니 이것이 당신에게 도움이되기를 바랍니다.
나에게 설정 파일은 "/etc/mysql/mysql.conf.d/mysqld.cnf"를 찾았고 바인드 주소를 주석 처리했습니다.
여기서 볼 수 있듯이 : 네트워크 건너 뛰기 대신 기본값은 이제 더 호환되고 덜 안전하지 않은 localhost에서만 수신하는 것입니다.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
하고 대신에 bind-address = 111.112.113.114
내가 사용 bind-address = 127.0.0.1
. SSH 터널 설정은 hostpresto.com/community/tutorials/…에 설명 된대로 설정됩니다 . 잘 하셨습니다 ! 감사!
이 동일한 문제가 발생하여 Bind Address 를 앞뒤로 사용할 수 없습니다. 나를위한 해결책은 권한 을 플러시하는 것이었다 .
mysql> FLUSH PRIVILEGES;
제가 설정 bind-address = 0.0.0.0
에서mysql/my.cnf
일했다. 기본적으로 모든 주소 (하지만 여전히 하나의 포트)를 수신합니다.
그리고 서버를 다시 시작하는 것을 잊지 마십시오. systemctl restart mysql
나는 같은 문제에 직면했다. AllowTcpForwarding Yes 를 확인하고 설정하려고 시도했지만 sshd_config에 누락되어 도움이되지 않았습니다. sshd_config 또는 my.cnf를 변경하지 않았습니다. ssh 호스트 이름이 mysql 호스트 이름 (localhost 사용)과 동일 하지 않은지 확인하십시오 .
워크 벤치에서 +를 선택하여 새 연결을 추가하고 다음을 설정합니다.
연결을 테스트하십시오. 성공하면 OK를 누르십시오. 바이올라!
비슷한 오류가 발생했습니다 (MYSql Workbench를 통해 AWS에서 MYSQL에 연결). 나는 전에 잘 연결하고 갑자기 작동을 멈추고 다시 작동하지 않습니다.) 내 연결은 키 파일로 보호되는 SSH를 통해 이루어졌습니다.
내가 시간이 초과되었다는 것이 밝혀졌습니다. 그래서 SQL 연결 시간 제한을 30 초 (기본값 10에서)로 늘렸고 다시 진행하는 것이 좋습니다. 시도 할 사항 (비슷한 설정에있는 경우)
mysql -u [username] -p [database]
있습니까? 사용자 권한 문제 등을 확인합니다.