MySQL을 localhost가 아닌 다른 곳에 노출하려면 다음 줄이 있어야합니다.
mysql 버전 5.6 이하
주석을 제거하고 /etc/mysql/my.cnf
루프백이 아닌 컴퓨터 IP 주소에 할당
mysql 버전 5.7 이상
주석을 제거하고 /etc/mysql/mysql.conf.d/mysqld.cnf
루프백이 아닌 컴퓨터 IP 주소에 할당
#Replace xxx with your IP Address
bind-address = xxx.xxx.xxx.xxx
또는 bind-address = 0.0.0.0
IP를 지정하지 않으려면 추가하십시오.
그런 다음 새 my.cnf 항목으로 MySQL을 중지하고 다시 시작합니다. 실행되면 터미널로 이동하여 다음 명령을 입력하십시오.
lsof -i -P | grep :3306
xxx의 실제 IP로 이와 같은 결과가 나타납니다.
mysqld 1046 mysql 10u IPv4 5203 0t0 TCP xxx.xxx.xxx.xxx:3306 (LISTEN)
위의 문이 올바르게 반환되면 원격 사용자를 수락 할 수 있습니다. 그러나 원격 사용자가 올바른 권한으로 연결하려면 해당 사용자가 localhost와 '%'모두에서 생성되어야합니다.
CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypass';
CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypass';
그때,
GRANT ALL ON *.* TO 'myuser'@'localhost';
GRANT ALL ON *.* TO 'myuser'@'%';
그리고 마지막으로,
FLUSH PRIVILEGES;
EXIT;
위와 동일한 사용자가 생성되지 않은 경우 로컬로 로그온 할 때 기본 localhost 권한을 상속하고 액세스 문제가 발생할 수 있습니다. myuser의 액세스를 제한하려면 여기 에서 GRANT 문 구문을 읽어야합니다. 이 모든 과정을 거치고 여전히 문제가있는 경우 몇 가지 추가 오류 출력과 my.cnf 해당 줄을 게시합니다.
참고 : lsof가 반환되지 않거나 찾을 수없는 경우 Linux 배포를 기반으로 여기에 설치할 수 있습니다 . 일을 작동시키기 위해 lsof가 필요하지는 않지만 일이 예상대로 작동하지 않을 때 매우 편리합니다.