답변:
MySQL에서는 기본적으로 허용됩니다.
기본적으로 비활성화되어있는 것은 원격 root
액세스입니다. 이를 사용 가능하게하려면이 SQL 명령을 로컬로 실행하십시오.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
FLUSH PRIVILEGES;
그리고 다음 줄을 찾아 파일 에서 주석 처리하십시오.my.cnf
일반적 /etc/mysql/my.cnf
으로 Unix / OSX 시스템에 있습니다. 경우에 따라 파일 위치는 /etc/mysql/mysql.conf.d/mysqld.cnf)입니다.
Windows 시스템 인 경우 MySQL 설치 디렉토리에서 찾을 수 C:\Program Files\MySQL\MySQL Server 5.5\
있습니다 my.ini
. 일반적으로 파일 이름은 다음과 같습니다 .
라인 변경
bind-address = 127.0.0.1
에
#bind-address = 127.0.0.1
변경 사항을 적용 하려면 MySQL 서버 ( Unix / OSX 및 Windows )를 다시 시작하십시오 .
my.cnf
찾는 파일이 아닌 bind-address
내 경우 (우분투 16.04.2에 MySQL 버전 14.14)에있는 파일의 위치 이었다는 것을, 거기에 메모를 지시를/etc/mysql/mysql.conf.d/mysqld.cnf
위의 모든 작업을 수행 한 후에도 여전히 root
원격으로 로그인 할 수 없었지만 Telnetting to port 는 연결을 수락하고 3306
있음을 확인했습니다 MySQL
.
MySQL에서 사용자를 살펴보기 시작했고 암호가 다른 여러 루트 사용자 가 있음을 알았습니다 .
select user, host, password from mysql.user;
그래서에서 MySQL
나는 루트에 대한 모든 암호를 설정 다시 나는 마지막으로 원격으로 로그인 할 수 있습니다 root
.
use mysql;
update user set password=PASSWORD('NEWPASSWORD') where User='root';
flush privileges;
update user set authentication_string=password('YOUR_PASSWORD') where user='root';
내 경험에 대한 참고 사항 인이 경로 아래에서 구성 파일을 찾을 수 있습니다 /etc/mysql/mysql.conf.d/mysqld.cnf
.
(나는이 길을 찾기 위해 한동안 고투했다)
sudo find /etc -iname 'mysql*.cnf'
제 경우에는 cent OS에서 원격 mysql 서버에 연결하려고했습니다. 많은 솔루션 (모든 권한 부여, IP 바인딩 제거, 네트워킹 사용)을 거친 후에도 여전히 문제가 해결되지 않았습니다.
다양한 솔루션을 살펴보면서 iptables를 발견했는데 mysql 포트 3306이 연결을 수락하지 않는다는 것을 알게되었습니다.
다음은이 문제를 확인하고 해결 한 방법에 대한 작은 메모입니다.
텔넷 (mysql 서버 ip) [portNo]
iptables -A 입력 -i eth0 -p tcp -m tcp --dport 3306 -j 수락
서비스 iptables 중지
도움이 되었기를 바랍니다.
MySQL 사용자에 대한 와일드 카드 원격 액세스를 설정하려면 아래 언급 된 단계를 따르십시오.
(1) cmd를 엽니 다.
(2) C : \ Program Files \ MySQL \ MySQL Server 5.X \ bin 경로로 이동하여이 명령을 실행하십시오.
mysql -u 루트 -p
(3) 루트 비밀번호를 입력하십시오.
(4) 다음 명령을 실행하여 권한을 제공하십시오.
모든 비밀번호를 *. *에 부여하여 '비밀번호'로 식별 된 'USERNAME'@ 'IP'에 부여하십시오.
USERNAME : MySQL 서버에 연결하려는 사용자 이름입니다.
IP : MySQL 서버에 대한 액세스를 허용하려는 공용 IP 주소.
비밀번호 : 사용 된 사용자 이름의 비밀번호입니다.
IP를 %로 대체하여 사용자가 모든 IP 주소에서 연결할 수 있습니다.
(5) 다음 명령에 따라 권한을 플러시하고 종료하십시오.
홍당무;
출구; 또는 \ q
MySQL 서버 프로세스가 127.0.0.1 또는 :: 1에서만 수신 대기중인 경우 원격으로 연결할 수 없습니다. 이 bind-address
설정 /etc/my.cnf
이 있으면 문제의 원인 일 수 있습니다.
또한 비 localhost
사용자에게도 권한을 추가해야합니다 .
127.0.0.1
있을까요?
MySQL을 설치했다면 brew
실제로는 기본적으로 로컬 인터페이스에서만 수신합니다. 편집 필요 해결하려면 /usr/local/etc/my.cnf
및 변경 bind-address
에서 127.0.0.1
에 *
.
그런 다음를 실행하십시오 brew services restart mysql
.
원격 로그인을위한 모든 프로세스. 원격 로그인은 기본적으로 해제되어 있습니다. 모든 ip에 대해 수동으로 열어야합니다.
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
특정 Ip
GRANT ALL PRIVILEGES ON *.* TO 'root'@'your_desire_ip' IDENTIFIED BY 'password';
그때
flush privileges;
사용자 호스트 및 비밀번호를 확인할 수 있습니다
SELECT host,user,authentication_string FROM mysql.user;
이제 당신의 임무는 이것을 바꾸는 것입니다
bind-address = 127.0.0.1
당신은 이것을 찾을 수 있습니다
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
거기에서 이것을 찾지 못하면 이것을 시도하십시오
sudo nano /etc/mysql/my.cnf
이 코멘트
#bind-address = 127.0.0.1
그런 다음 Mysql을 다시 시작하십시오.
sudo service mysql restart
이제 원격 로그인을 즐기십시오
참고로 몇 시간 동안이 문제로 머리카락을 뽑았습니다. 마침내 호스팅 업체에 전화를 걸어 1and1의 제어판에서 클라우드 서버를 사용하는 경우 방화벽을 추가하고 포트를 추가 해야하는 보조 방화벽이 있음을 발견했습니다 3306. 일단 추가되면 곧바로 ..
이 블로그 로컬 영역 네트워크에서 MySQL 서버를 설정하는 방법MySQL
은 처음부터 설정하는 데 유용합니다
그리고 OS X 사용자의 경우 bind-address 매개 변수는 일반적으로 my.ini 파일이 아니라 시작된 plist에 설정됩니다. 그래서 내 경우에는에서 제거 <string>--bind-address=127.0.0.1</string>
했습니다 /Library/LaunchDaemons/homebrew.mxcl.mariadb.plist
.
~/Library/LaunchAgents
원격 루트 액세스를 활성화하면 위험 할 수 있습니다. 더 제한적인 권한으로 사용자 계정을 설정하는 것이 좋습니다. 다음 세 단계를 수행해야합니다.
bind-address ...
my.ini 또는 my.cnf 파일에서 시작하는 줄 이 적어도 주석 처리되어 있는지 확인하십시오 . 존재하지 않는 경우 계속 진행하십시오. 이 파일은 C:\ProgramData\MySQL\MySQL Server 8.0
Windows 에서 찾을 수 있습니다 .
그런 다음 연결을 설정하려는 사용자 계정이 localhost
호스트 제한으로 제한 필드에 없는지 확인하십시오 . 권장되지는 않지만 대신 %
테스트 목적으로 해당 필드에 넣을 수 있습니다 . MySQL Workbench로 서버에 대한 로컬 연결을 연 다음 메뉴 표시 줄에서 서버> 사용자 및 권한으로 이동하여 연결하려는 사용자 계정을 찾으면됩니다.
"호스트 일치 일치"필드는 로컬이 아닌 연결을 허용하지 않습니다. 즉, 허용 된 연결을 IP 주소 패턴으로 제한합니다. 이상적으로는 고정 IP 주소 또는 서브넷에서 MySQL 서버에 액세스하여 가능한 한 제한적이어야합니다.