ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MariaDB] 원격 접속 허용하기
    Backend/DB 2023. 11. 28. 14:29

    [환경]

    Ubuntu 16.04

    MariaDB 10.0.38 - localhost로 동작 중

     

    [요약]

    1. 원격 접속용 계정 생성 
    2. MySQL 설정에서 원격 접속을 허용할 IP 지정
    3. 변경 사항이 잘 도록 DB Server 재실행 또는  Node Reboot (택 1)
    4. 원격 접속 설정 적용 확인 
    5. 클라이언트에 원격 접속용 계정 정보 입력. 

     

    [상세 설명]

    1. 원격 접속용 계정 생성 (SQL 지식 필요)

    GRANT ALL PRIVILEGES ON {db_name}.{table_name} TO "{username}"@"{host_type}" IDENTIFIED BY "{password}";

    위 명령어는 계정에 권한을 부여하는 명령어이다. 만약 계정이 없을 시 계정 생성 후 생성한 계정에 지정한 권한을 부여한다. (부여할 수 있는 권한의 종류는 따로 조사할 것. 현재는 모든 권한을 의미하는 ALL PRIVILEGES 를 사용.)

     

    2. MariaDB 설정에서 원격 접속을 허용할 IP 지정

    Ubuntu 기준 MariaDB(10.0.38)의 설정은 다음 경로에 위치한다.

    /etc/mysql/mariadb.cnf.d/50-server.conf

    위 파일에서 [mysqld]의  bind-address = 127.0.0.1 을 bind-address = {원하는 IP} 로 수정한다.

    모든 IP에 대해 원격 접속을 허용할 때에는 0.0.0.0 을 사용한다.

    (bind-address 설명: https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_bind_address)

     

    3. 변경 사항이 적용되도록 DB Server 재실행 또는  Node Reboot (택 1)

    sudo systemctl restart mysql-server

    필자의 경우 위 명령어로도 DB가 재실행되지 않아 Node를 Reboo 함.

     

    4. 원격 접속 설정 적용 확인 

    Ubuntu에서는 현재 사용 중인 Port 목록으로 MariaDB의 원격 접속 설정의 적용 여부를 확인할 수 있다.

    user@pyhit:/var/www/html/ourAdmin$ netstat -nlpte
    (Not all processes could be identified, non-owned process info
     will not be shown, you would have to be root to see it all.)
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       User       Inode       PID/Program name
    tcp        0      0 x.x.x.x:3306            0.0.0.0:*               LISTEN      124        21087       -

    보통은 Program name 에 MySQL 이라고 뜨던데 필자의 경우에는 공란이었다. 그러나 MariaDB의 기본 Port 번호가 3306이므로 x.x.x.x:3306 <- (x.x.x.x는 2에서 설정했던 IP) 이 현재 사용 중인 DB Server 일 것으로 추측하였다.(해당 Node 에 DB Server가 1개 뿐이었으므로 가능했던 추측...)

     이제 IP 주소는 x.x.x.x에 Port 번호 3306을 사용하면 DB Server로 원격 접속이 가능하다.

     

    5. 클라이언트에 원격 접속용 계정 입력.

    DB에 원격으로 접속하려는 클라이언트의 형태는 개인마다 다를 것이다.

    필자의 경우에는 Django Project 였으므로 Project 내 config/settings.py 에 DATABASE 설정을 수정해주었다.

    PHP 웹 서비스의 경우 /var/www/html/dbconnect.inc.php 를 수정해주어야 한다. 해당 설정을 수정하지 않으면 로그인 화면에서 원격 접속용 계정을 입력하여도 DB에 접속할 수 없다. (더 조사 필요)

     


    위 과정을 통해 DB 원격 접속이 가능한 상태가 되었다.

    그러나 원격 접속이 허용된 DB Server에는 locahost용 계정으로는 접근이 불가능해보였다.

    원격 접속과 Local 접속이 동시에 허용될 수는 없는 것인지는 좀 더 조사가 필요하다.

    'Backend > DB' 카테고리의 다른 글

    [MySQL] Partition 과 Unique Key  (0) 2023.12.14
    [DB][SQL][DML] JOIN, ALIAS, VIEW, SELECT INTO, INSERT INTO, CASE WHEN ~  (1) 2023.11.07
    트랜잭션  (0) 2023.09.30

    댓글

Designed by Tistory.