[태그:] mysql

  • MariaDB 설치 및 관리(MySQL)

    1. ubuntu에 설치할 수 있는 데이터베이스 패키지

    1. MySQL: 유명한 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다.
    2. PostgreSQL: 강력한 오픈 소스 RDBMS로, 많은 기능과 확장성을 제공합니다.
    3. MongoDB: 문서 지향 NoSQL 데이터베이스입니다.
    4. SQLite: 경량의 오픈 소스 관계형 데이터베이스 엔진으로, 임베디드 시스템 및 작은 규모의 응용 프로그램에 적합합니다.
    5. Redis: 고성능 키-값 저장소로, 메모리 기반 데이터 구조 서버입니다.
    6. MariaDB: MySQL의 포크 버전으로, 호환성을 유지하면서 개선된 성능과 안정성을 제공합니다.

    2. MariaDB 이해

    MariaDB는 MySQL의 포크로 시작된 오픈 소스 관계형 데이터베이스 관리 시스템(RDBMS)입니다. MySQL과 완전히 호환되며, 사용자들은 기존의 MySQL 환경에서 MariaDB로 쉽게 마이그레이션할 수 있습니다. MariaDB는 많은 리눅스 배포판에서 기본적인 RDBMS로 사용되고 있습니다.

    1) MariaDB 특징

    • 성능: MariaDB는 대용량 데이터 처리에 뛰어난 성능을 제공합니다. 쿼리 최적화, 인덱싱 기능, 병렬 처리 등의 최적화 작업으로 성능 향상이 이루어졌습니다.
    • 확장성: MariaDB는 데이터베이스 서버를 수평 및 수직으로 확장할 수 있습니다. 마스터-슬레이브 복제 및 클러스터링과 같은 다양한 방식으로 확장성을 구현할 수 있습니다.
    • 보안: MariaDB는 데이터베이스 보안에 큰 중점을 두고 있습니다. SSL/TLS 암호화, 액세스 제어, 데이터 마스킹 등의 기능을 제공하여 데이터의 안전성을 보장합니다.
    • 개방성: MariaDB는 오픈 소스로 개발되었으며, 사용자들은 소스 코드에 접근하여 수정하고 개선할 수 있습니다. 또한 다양한 플러그인과 확장 기능을 제공하여 사용자의 요구에 맞게 커스터마이징할 수 있습니다.

    2) MariaDB 장점

    • MariaDB는 MySQL과 완전히 호환되므로, 기존의 MySQL 사용자들은 쉽게 마이그레이션할 수 있습니다.
    • MariaDB는 최적화된 쿼리 처리 및 인덱싱 기능으로 빠른 성능을 제공합니다.
    • MariaDB는 데이터베이스 서버를 유연하게 확장할 수 있습니다.
    • MariaDB는 많은 리눅스 배포판에서 안정적으로 사용되고 있으며, 오류 복구 및 내결함성을 위한 기능을 제공합니다.

    3) MariaDB 단점

    • MySQL에 비해 상대적으로 작은 커뮤니티를 가지고 있기 때문에, 문제 해결과 지원을 받기가 어려울 수 있습니다.
    • MariaDB는 MySQL과 호환되지만 일부 특정 기능에서 차이가 발생할 수 있으며, 이로 인해 일부 애플리케이션들이 제대로 동작하지 않을 수 있습니다.

    3. MariaDB 설치

    1) MariaDB 사전 준비

    ubuntu의 패키지를 업데이트 및 업그레이드를 진행합니다.

    sudo apt update
    sudo apt upgrade

    Read in English

    2) MariaDB 설치

    sudo apt install mariadb-server

    2) MariaDB 서비스 확인

    설치가 완료되면 MariaDB 서비스가 자동으로 시작됩니다. 서비스 상태를 확인하려면 다음 명령을 실행합니다:

    sudo systemctl status mariadb

    3) MariaDB 보안 스크립트 실행

    MariaDB를 보다 쉽게 구성하기 위해 다음 명령을 실행하여 보안 스크립트를 실행합니다:

    • Enter current password for root : 초기 설치시에는 패스워드가 없기에 enter를 실행합니다
    • Change the root password : Y를 입력하고 패스워드를 설정합니다.
    • Remove anonymou user: 익명 사용자를 제거하려면 Y를 입력합니다.
    • Disallow root login remotely: 원격 로그인을 활성화 하려면 Y, 비활성화 하려면 N를 입력합니다.
    • Remove test database and access to it: test 데이터베이스를 삭제하려면 Y를 입력합니다.
    • Reload privilege tables now: 변경 사항을 저장하려면 Y를 입력합니다.
    sudo mysql_secure_installation

    이제 MySQL 서버의 보안 설정이 완료되었습니다.

    Thinknote

    함께 읽으면 좋은 글

  • firewall(방화벽) 설정

    firewall(방화벽) 설정

    1. firewall(방화벽) 이해 및 업데이트

    firewalld은 centos 운영체제에서 기본으로 제공되는 방화벽 관리 도구다. firewalld는 IPv4 및 IPv6 네트워크를 모두 지원하며 프로필 영역에서 정의된 대로 작동하며 신뢰도가 높다.

    • block : 시스템 내에서 시작된 네트워크만 연결하고 그 외의 모든 연결은 거부
    • dmz : 허용된 port의 연결만 허용하며 들어오는 포트에 대한 연결을 제공
    • drop: 들어오는 모든 연결은 차단하며 나가는 네트워크 연결만 허용
    • public: 네트워크 내의 다른 서버나 컴퓨터는 신뢰하지 않으며 필요한 포트와 서비스만 허용
    • trusted: 모든 영역에 대해서 연결 허용
    • home: 로컬 네트워크의 신뢰하는 PC와 연결하며 선택된 TCP/IP 포트만 허용

    friewall을 사용해서 트래픽을 허용하거나 차단할 수 있다. Centos 8 에서는 동적인 인터페이스와 함께 사용자 정의 기반의 방화벽이 함께 제공된다.

    firewall은 시스템과 외부 소스 사이에 장벽을 형성하여 외부에서 발생한 피해가 확산하여 소중한 내부 데이터를 손상시키지 못하도록 차단한다. 그래서 방화벽은 반드시 사용해야 하며 서비스가 잘 안된다 하여 중지하면 안된다.

    1. Centos 8 의 모든 영역 확인
    sudo firewall-cmd --get-zones
    centos firewall

    Read in English

    2. firewall(방화벽) 버전 확인
    sudo firewall-cmd --version
    centos firewall

    firewall(방화벽) 설정

    1. firewall(방화벽) 상태 확인
    sudo systemctl status firewall
    3. firewall(방화벽) 시작
    sudo systemctl start firewall
    4. firewall(방화벽) 중지
    sudo systemctl stop firewall
    5. firewall(방화벽) 재시작
    sudo systemctl restart firewall
    6. firewall(방화벽) 서비스 등록
    sudo systemctl enable firewall
    7. firewall(방화벽) 서비스 비활성화
    sudo systemctl disable firewall
    8. firewall(방화벽) 갱신
    sudo firewall-cmd --reload
    9. firewall(방화벽) 설정 파일
    /etc/firewalld/firewalld.conf

    firewall 방화벽 port 설정

    * firewall(방화벽) 목록 확인
    sudo firewall-cmd --list-all
    * 사용되는 서비스 확인
    sudo firewall-cmd --list-services

    OR

    sudo firewall-cmd --list-services --zone=public
    *centos 8 cockpit 제거(리눅스 관리자 tool – cockpit 활성화)
    sudo firewall-cmd --remove-service=cockpit --permanent
    * dhcpv6 클라이언트 서비스 제거
    sudo firewall-cmd --remove-service=dhcpv6-client --permanent
    * firewall(방화벽)에서 지원하는 서비스 목록

    port를 직접 지정해도 되지만 서비스 명을 활용해서 운용할 수 있다.

    sudo firewall-cmd --get-services
    sudo firewall-cmd --get-services | grep [찾을 서비스명 : http or mysql]
    

    서비스의 포트 정보는 아래 링크의 xml 파일을 통해 확인할 수 있다.

    sudo ls -l /usr/lib/firewalld/services/
    sudo cat /usr/lib/firewalld/services/ssh.xml
    * firewall(방화벽) 서비스 및 포트 추가(예 : http port)

    다음은 public zone에 http 포트를 영구히 추가하는 명령어다. 뒤에 –permanent를 삭제하고 입력하면 일시적으로 추가되며 재부팅 후 사라진다. 서비스 및 port를 등록하면 reload를 반드시 해준다.

    sudo firewall-cmd --zone=public --add-service=http --permanent

    OR

    sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
    centos firewall
    sudo firewall-cmd --reload
    * firewall(방화벽) 서비스 및 포트 삭제(예 : http port)

    다음은 public zone에 http 포트를 영구히 삭제하는 명령어다. 뒤에 –permanent를 삭제하고 입력하면 일시적으로 삭제되며 재부팅 후 유지된다. 서비스 및 port를 삭제하면 reload를 반드시 해준다.

    sudo firewall-cmd --zone=public --remove-service=http --permanent

    OR

    sudo firewall-cmd --zone=public --remove-port=80/tcp --permanent
    centos firewall
    sudo firewall-cmd --reload

    firewall은 git을 통해 업데이트 할 수 있다. https://firewalld.org/

    함께 읽으면 좋은 글