Server

서버에서 MySQL(MariaDB) 원격 연결 설정

Simon Yoon 2022. 9. 1. 09:32

Description


1. Server 자원 접속

mac OS 작업 환경 기준 서버 운영체제는 Ubuntu 기준
  • macOS는 기본적으로 UNIX 기반의 운영체제 → 그렇기 때문에 OpenSSH Client를 기본으로 포함
  • 키 파일의 권한을 400으로 변환하여 가능 권한을 맞추고 아래와 같은 명령어를 통해서 서버에 접속
    # pem 파일 400 권한으로 변경
    $ chmod 400 <Key File 경로>
    # 예: chmod 400 /Users/simon/key.pem
    
    # 접속
    $ ssh [User]@[Server IP] -p [Port] -i [KeyFile]
    # 예: ssh ubuntu@211.45.x.x -p 22 -i /Users/simon/key.pem
    # 또는
    $ ssh -i [KeyFile] [User]@211.45.x.x
    # 예: ssh -i ~/.ssh/key.pem ubuntu@211.45.x.x

2. MySQL 설치 (+MariaDB)

3. DB 권한 설정 (MySQL, MariaDB)

  • 아래의 명령어를 입력하여 MySQL 패스워드 설정
    $ sudo mysql
    
    # mysql 접속후 쿼리로 입력
    ## DB 접속후 현재 설정 확인
    mysql > SELECT user, authentication_string, plugin, host FROM mysql.user;
    
    ## 계정 권한 부여(여기서는 root)
    mysql > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<your password>';
    mysql > FLUSH PRIVILEGES;
    
    ## 계정 권한 설정 후 설정 확인
    mysql > SELECT user, authentication_string, plugin, host FROM mysql.user;
    mysql > exit

    위의 SQL 쿼리 중에서 SELECT 문을 입력하게 되면 아래와 같은 결과가 출력됨을 확인할 수 있다.

  • Access MySQL(MariaDB)
    • 아래는 기본적으로 mysql(mariadb) 접속을 위한 command line임
      sudo mysql -u root  # root로 접속
      
      # if root user has a predefined password,
      sudo mysql -u root -p

      참고로 Enter password: 뒤에 패스워드를 입력해보면 아무것도 입력이 안되는 것처럼 비어 보일 수 있으나, 비밀번호가 노출되지 않도록 안보이게 입력이 되는 상태

4. 원격 접속 허용 설정

4-1. 설정 파일 찾기

4-2. 설정 파일 변경

  • vi 편집기로 open my.cnf file
    sudo vi /etc/mysql/my.cnf

    편집 영역으로 들어왔으면 i 를 눌러서 insert mode로 변경하고 [mysqld]의 bind-address = 0.0.0.0 으로 변경

    [mysqld]
    
    bind-address = 0.0.0.0

    만약 my.cnf 파일에 해당 내용이 입력되어 있지 않을 경우, 위와 같은 내용을 추가해주면 된다. 설정 사항을 입력해주었다면 ESC를 누르고 :wq 를 입력하여 변경 내용을 저장하고 편집기를 나오도록 한다.

    이제 설정을 변경해 줬으므로 이후에는 재시작을 하여 변경내용을 적용시켜 주어야 한다.

  • bind-address 에서 특정 IP만 허용하기 위해서는 아래와 같은 형태로 작성할 수 있음
    bind-address = 192.168.0.1, 10.0.0.1

  • 만약 readonly option is set (add ! to override) 메세지가 출력된다면…
    • 위와 같은 메세지가 출력되는 경우는 sudo vi 로 편집을 하지 않고 바로 vi /etc/mysql/my.cnf 로 파일을 수정하려고 했기 때문이다.

      이때는 :qa! 로 편집기를 먼저 나오고 다시 sudo ~ 로 실행하도록 하자. 이것도 안된다면 아래의 사이트에서 다른 답변을 확인할 수 있다.

      (Source: askubuntu 링크)

4-3. DB 재시작

  • 아래의 명령어 중에서 재시작을 위해 restart 를 실행하여 DB를 재시작하고 설정 내용을 적용시켜준다.
    sudo systemctl start mysql.service
    sudo systemctl stop mysql.service
    sudo systemctl restart mysql.service
    sudo systemctl status mysql.service

5. 새로운 유저 생성

  • 기본적으로 새로운 user를 생성하는 것은 아래의 SQL 쿼리로 작성할 수 있다.
    mysql> CREATE USER 'user1'@localhost IDENTIFIED BY 'password1';

    생성한 유저는 아래의 쿼리를 입력하여 확인할 수 있음

    mysql> SELECT User FROM mysql.user;
    
    # localhost가 아닌 사용자 찾기
    mysql> SELECT User, Host FROM mysql.user where Host <> 'localhost';
    
    # 위에서 작성했던 쿼리를 작성해도 됨
    mysql> SELECT user, authentication_string, plugin, host FROM mysql.user;

  • 새로 생성한 user1 사용자를 192.168.0.* 대의 IP에서 접근이 가능하도록 권한 부여
    mysql> GRANT ALL PRIVILEGES ON *.* TO 'user1'@'192.168.0.%' IDENTIFIED BY 'new_password' WITH GRANT OPTION;

    만약 기존 비밀번호를 그대로 사용하고 싶으면 IDENTIFIED BY ‘new_password’ 부분을 생략

    (Source: 티스토리 블로그 링크)

참고자료

Ubuntu에서 mariaDB 외부접속 허용, 원격접속하기 with HeidiSQL
Ncloud Ubuntu 서버에서 mariaDB 외부접속 허용하는 방법과 HeidiSQL으로 원격접속하는 방법입니다 네이버 클라우드 Ubuntu에서 mariaDB 외부접속을 허용하고, mariaDB용 클라이언트 HeidiSQL을 이용해서 원격접속하는 방법을 정리해보겠습니다. 여기서 원격접속이라 함은 SSH의 Tunnels를 이용하지 않고, 외부 클라이언트 등을 이용한 직접 접속을 뜻합니다. 여기서는 네이버 클라우드에서 서버를 생성했을 때 자동으로 설정되는 root 계정을 이용한 방법을 정리하게 됩니다.
https://docs.3rdeyesys.com/database/ncloud_database_mariadb_access_from_remote_ubuntu.html#acg-%ED%8F%AC%ED%8A%B8-%EC%B6%94%EA%B0%80
MariaDB 설치 - 원격 접속 설정
MariaDB 설치 $ sudo apt install mariadb-server MariaDB 초기화 - 권한 설정(mysql_secure_installation) $ sudo mysql_secure_installation NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY! In order to log into MariaDB to secure it, we'll need the current password for the root user.
https://bluexmas.tistory.com/895
MariaDB(MySQL) 원격에서 접근이 가능하도록 설정하기
이 문서는 2016-12-21에 작성되었습니다. 이 문서의 MariaDB는 mysql Ver 15.1 Distrib 5.5.50-MariaDB, for Linux (x86_64) using readline 5.1 입니다. 이 문서의 Centos7은 3.10.0-327.36.3.el7.x86_64 #1 SMP Mon Oct 24 16:09:20 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux 입니다. MariaDB 패키지는 기본적으로 127.0.0.1 만 접근하도록 허용합니다.
https://gafani.tistory.com/entry/MariaDBMySQL-%EC%9B%90%EA%B2%A9%EC%97%90%EC%84%9C-%EC%A0%91%EA%B7%BC%EC%9D%B4-%EA%B0%80%EB%8A%A5%ED%95%98%EB%8F%84%EB%A1%9D-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0

Uploaded by N2T