728x90
반응형
MySQL database 원격 접속 허용 방법
I. Ubuntu
1. my.cnf(5.7) 혹은 mysqld.cnf(8.0) 파일 찾기
/etc/mysqll/mysql.conf.d/mysqld.cnf 파일을 열어서
bind address = 127.0.0.1 부분을 찾아
bind address = 0.0.0.0 으로 수정
2. mysql 재시작
systemctl restart mysql
3. 서버 내 방화벽에서 3306번 포트 허용
4. 유저 생성 및 권한 부여
use mysql;
create user '{유저명}'@'%' identified by '{비밀번호}';
grant all privileges on {db이름}.* to '{유저명}'@'%' identified by '{비밀번호}';
II. Windows
- Windows를 서버로 사용하는 사람은 아마 거의 없겠지만... 어릴 때의 내가 삽질했던 기억이 있어서 작성해둔다.
- 유사 에러
- ERROR 2003
- WINERROR 10061
- 사용환경: Win10, mysql 8.0
1. 유저 IP 활성화
SERVER -> USERS and PRIVILEGES에서
원격 접속을 활성화하고자 하는 계정의 'Limit to Hosts Matching' 부분을 %0.0.0.0으로 바꾼다.
특정 IP의 접속만을 원하면 저기에 특정 IP 주소를 작성한다.
2. 접속 권한
GRANT ALL PRIVILEGES ON *.* TO '유저 이름'@'%';
flush privileges;
유저에게 접속 권한을 준다.
3. 방화벽
- Win 10 기준
- 제어판 -> 시스템 및 보안 -> Windows Defender 방화벽 -> 고급 설정 -> 인바운드 규칙 에 들어간다.
- 오른쪽 메뉴의 작업인 '새 규칙' 클릭.
- 만들려는 규칙 종류: 프로그램
- 다음 프로그램 경로 -> C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe (중요한 것은 mysqld.exe 파일을 찾는 것이다. 내 컴퓨터에는 윗줄의 경로로 지정되어 있다).
- 연결 허용
- 규칙이 적용되는 시기: 모두 체크
- 이름과 설명은 마음대로 하고 마치면 규칙이 추가된다. 설정 완료!
4. 기타 윈도우에서 적용할 수 없는 것들
- 윈도우에서는 my.cnf가 없다. 대신 my.ini 파일이 존재한다.
- C:\ProgramData\MySQL\MySQL Server 8.0\my.ini 대부분 컴퓨터는 이 경로에 존재한다(리눅스는 my.cnf가 맞다).
- 우선 검색하면 많이들 나오는 bind_address는 윈도우의 my.ini 파일에 없다.
-
을 실행시키면 알 수 있다.SHOW VARIABLES WHERE Variable_name = 'bind_address';
- 웬만해서는 *로 되어있을 것이며, 설정을 바꾼다고 해서 바뀌는 것은 없다.
-
- skip-networking 은 무엇인가?
- 윈도우의 my.ini 파일에서 찾아보면 해당 옵션이 주석 처리된 것을 볼 수 있다. 주석 처리를 한 채 두어야 한다!
- skip-networking을 활성화하면 소켓으로만 통신한다. 결국 외부 접속을 막는 셈이다.
- 삽질 과정에서 활성화해야한다고 글을 잘못 읽고 주석 처리를 해제했더니 윈도우의 소켓 에러(10061)가 발생했다.
- 주석 처리가 되어있다면 처리한 채 두자.
+ pymysql 사용하여 파이썬과의 연동 시, host = ' ' <- 이부분에 들어갈 것은 localhost도 127.0.0.1도 아니고 내 컴퓨터 IP도 아니고 hostname도 아닌 것 같다. 가장 유력한 건 ```SQL SHOW VARIABLES WHERE Variable_name = 'hostname'; ``` 이 문장을 실행시켰을 때 뜨는 value(내 컴퓨터 이름) 이 유력해 보이는데 이부분은 팀원과 테스트했을 때 안돼서 잘 모르겠다. 해결되면 업데이트하려고 한다. >> 2022 7 12 이게 왜 이래야 하는지 해답을 찾았다... 추후 업데이트
728x90
반응형
'Computer Science > Troubleshooting' 카테고리의 다른 글
[Java] Scanner System.in closed (1) | 2022.08.11 |
---|---|
[Java] String 배열을 선언할 때 발생하는 Null Exception (0) | 2022.08.10 |
[MySQL] MySQL ERROR 1175 (0) | 2022.08.10 |
[Windows] 윈도우 11 숨김폴더 보기 (0) | 2022.08.09 |
[MySQL] MySQL ERROR 1290 (0) | 2022.08.07 |