MySQL 설치는 끝났다. 하지만 외부에서 DB로 접근이 아직 안된다. 방화벽 포트를 열어주고, MySQL에서 권한을 부여해야한다. 1. 방화벽 포트 개방 ssh를 위한 22번과 MySQL 3306포트가 열린것을 확인할 수 있다.
포트 변경을 하고싶다면 /etc/my.cnf 설정파일에 port=원하는 포트로 수정 혹은 추가를 해주면 된다. 2. MySQL 권한 부여 -모든 ip 개방
-특정 대역 개방
-특정 ip 개방
MySQL 설치 및 환경 설정까지 마친다. Host 'IP' is not allowed to connect to this MySQL server - Mysql 은 기본적으로 Local에서만 접속이 가능하도록 되어있다 때문에 별도의 설정을 해주어야 원격 접속이 가능하다 1. root의 접속권한 확인 - root 계정으로는 local에서만 접근 가능함을 알 수 있다 mysql > SELECT Host,User,authentication_string FROM mysql.user; 2. 원격접속 허용 2.1 원격 유저 생성 create user 'root'@'%' identified by 'crew1207'; 2.2 권한 부여 1) 모든 IP 허용 mysql > GRANT ALL ON *.* TO root@'%'; mysql > FLUSH PRIVILEGES; 2) IP 대역 허용 - 다음과 같이 설정하면 10.0로 시작하는 모든 IP가 허용된다. mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.%' identified by '패스워드'; mysql > FLUSH PRIVILEGES; 3) 특정 IP 1개 허용 - 다음과 같이 설정하면 10.0.0.1의 IP만 원격접속을 허용한다 mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'10.0.0.1' identified by '패스워드'; mysql > FLUSH PRIVILEGES; 3. 원격접속 허용전으로 되돌리기 - DELETE FROM mysql.user WHERE Host='%' AND User='root'; FLUSH PRIVILEGES; 4. 원격접속 하기 # mysql -h '원격서버의ip 또는 도메인' -u '원격접속이 허용된 사용자이름' -p MySQL을 내 PC에 깔고 사용하는 유저가 아니라면 외부에서 접속이 필요하다. 외부에서 MySQL에 접근하려면 어떻게 해야할까? 우리가 일반적으로 사용하는 접속정보에 그 답이 있다. 접속정보는 대부분 아래와 같은 특성을 가진다.
위와 같은 정보를 제공하기 위해서는 몇 가지 작업이 필요하다. 방화벽 PORT 열기PC나 서버나 방화벽이 있다. 외부에서 접근하기 위해서는 PORT를 열어주어야 한다. MySQL에서 사용되는 PORT는 다음과 같이 확인이 가능하다.
MySQL을 기본적으로 3306을 사용한다. 내가 설치하지 않은 경우에는 아닐 수 있으니 PORT를 확인하는 방법은 알아두는 것이 좋다. PORT를 확인했으면 firewall-cmd 명령으로 PORT를 열자.
외부 접속권한 부여MySQL은 USER를 내부에서 생성하고 권한을 부여할 수 있다. 학습하는 과정이니 root 유저를 사용하는 것도 괜찮으나 유저를 생성하여 권한을 부여해보자. USER 생성MySQL에 접속 후 USER를 생성하겠다. 유저를 생성하는 문장은 다음과 같다.
USER IP는 USER가 접속할 때, MySQL서버에서 보이는 IP이다. 대부분 공인IP나 내부 네트워크일 경우 ipconfig로 확인 할 수 있다. 확인하는 과정은 꽤 번거로운 과정이 있으므로 아래와 같이 '%'를 활용하여 모든 IP에서 접속이 가능하도록 만들겠다.
그럼, zdevowl로 USER를 만들어보자.
유저를 만든 다음에는 권한을 부여해야한다. 권한을 부여하는 구문은 다음과 같다.
권한도 세분화하면 여러가지가 있으나 지금은 priv_type은 ALL, priv_level은 .로 부여하겠다.
권한을 부여한후에는 아래와 같이 FLUSH 해야한다.
마치며...외부접속을 허용하는 과정이 생각보다 까다로웠으나 그 만큼 보안에 신경을 쓰고있다는 것을 느꼈다. 미래의 나에게 꽤 도움되는 글이라 생각한다. |