웹사이트 검색

CentOS 6에 MariaDB 10.0 설치


이 페이지에서

  1. 전제 조건
  2. MariaDB 저장소 설정
  3. 2단계 – Yum으로 MariaDB 10 설치
    1. MySQL 제거(설치된 경우에만)
    2. MariaDB 10 설치

    MariaDB는 커뮤니티에서 개발한 MySQL 포크이며 향상된 드롭인 교체를 목표로 합니다. GNU GPL 라이센스이며 Monty Widenius와 같은 MySQL의 원래 개발자가 주도합니다. MariaDB는 현재 활성화된 것처럼 보이지만 MySQL보다 시장 점유율이 훨씬 낮습니다. MySQL이 가지고 있는 큰 추진력 때문에 여전히 많은 커뮤니티가 있지만 오픈 소스 세계의 대부분의 새로운 활동이 MariaDB를 중심으로 이루어지고 대부분의 Linux 배포판이 MariaDB를 MySQL 호환 데이터베이스로 제공한다는 분명한 추세가 있습니다. 다음 튜토리얼은 CentOS 6에 MariaDB 10.0을 설치하는 단계를 안내합니다. CentOS 6이 너무 오래되었습니까? 예, 맞습니다. 하지만 CentOS 6은 보안 업데이트를 통해 2020년까지 계속 지원되며 이를 사용하는 서버가 아직 많이 있지만 최신 MySQL 호환 데이터베이스가 필요할 수 있습니다. 최신 CMS 시스템을 호스팅합니다.

    전제 조건

    1. 이 안내는 단일 CentOS 6 노드(MySQL이 이미 설치되지 않은 상태)에 MariaDB 10.0을 설치하기 위한 것입니다.\n
    2. 기본 MariaDB 설치는 /var/lib/mysql 디렉토리를 사용하여 데이터베이스를 저장하므로 /var와 연결된 파티션 또는 논리 볼륨에는 충분한 공간이 필요합니다.\n
    3. 구성 파일 백업(교체 전용): 마찬가지로 현재 설치를 교체하는 경우 현재 MySQL/MariaDB 구성 파일의 복사본을 만드는 것이 좋습니다. 이 파일은 Debian/Ubuntu 시스템의 /etc/mysql/my.cnf 및 CentOS 시스템의 /etc/my.cnf에서 찾을 수 있습니다. CentOS에서 MariaDB 패키지는 제거 시 구성 파일을 제거하므로 이 단계는 이러한 시스템에서 특히 중요합니다.\n
    4. 이 튜토리얼의 나머지 부분에서는 루트 사용자 계정 또는 sudo 권한이 있는 사용자 계정으로 서버에 연결되어 있다고 가정합니다. 다른 계정에서 루트 셸에 들어가려면 다음을 실행합니다.\n

    sudo su

    1단계. MariaDB 저장소 설정

    사용 가능한 패키지가 최신인지 확인해야 합니다. 이를 위해 터미널에서 다음 명령을 실행하기만 하면 됩니다.

    yum -y update
    Loaded plugins: fastestmirror
    base | 3.6 kB 00:00
    extras | 3.4 kB 00:00
    updates | 3.4 kB 00:00
    (1/4): base/7/x86_64/group_gz | 155 kB 00:00
    (2/4): extras/7/x86_64/primary_db | 101 kB 00:00
    (3/4): updates/7/x86_64/primary_db | 3.1 MB 00:00
    (4/4): base/7/x86_64/primary_db | 5.3 MB 00:04
    Determining fastest mirrors
    * base: mirror.net.cen.ct.gov
    * extras: mirror.es.its.nyu.edu
    * updates: mirror.atlanticmetro.net
    Resolving Dependencies
    --> Running transaction check
    ---> Package openssl.x86_64 1:1.0.1e-51.el7_2.2 will be updated
    ---> Package openssl.x86_64 1:1.0.1e-51.el7_2.4 will be an update
    ---> Package openssl-libs.x86_64 1:1.0.1e-51.el7_2.2 will be updated
    ---> Package openssl-libs.x86_64 1:1.0.1e-51.el7_2.4 will be an update
    --> Finished Dependency Resolution
    Dependencies Resolved
    ================================================================================
    Package Arch Version Repository Size
    ================================================================================
    Updating:
    openssl x86_64 1:1.0.1e-51.el7_2.4 updates 711 k
    openssl-libs x86_64 1:1.0.1e-51.el7_2.4 updates 951 k
    Transaction Summary
    ================================================================================
    Upgrade 2 Packages
    Total download size: 1.6 M
    Downloading packages:
    Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
    (1/2): openssl-1.0.1e-51.el7_2.4.x86_64.rpm | 711 kB 00:00
    (2/2): openssl-libs-1.0.1e-51.el7_2.4.x86_64.rpm | 951 kB 00:00
    --------------------------------------------------------------------------------
    Total 2.3 MB/s | 1.6 MB 00:00
    Running transaction check
    Running transaction test
    Transaction test succeeded
    Running transaction
    Updating : 1:openssl-libs-1.0.1e-51.el7_2.4.x86_64 1/4
    Updating : 1:openssl-1.0.1e-51.el7_2.4.x86_64 2/4
    Cleanup : 1:openssl-1.0.1e-51.el7_2.2.x86_64 3/4
    Cleanup : 1:openssl-libs-1.0.1e-51.el7_2.2.x86_64 4/4
    Verifying : 1:openssl-libs-1.0.1e-51.el7_2.4.x86_64 1/4
    Verifying : 1:openssl-1.0.1e-51.el7_2.4.x86_64 2/4
    Verifying : 1:openssl-1.0.1e-51.el7_2.2.x86_64 3/4
    Verifying : 1:openssl-libs-1.0.1e-51.el7_2.2.x86_64 4/4
    Updated:
    openssl.x86_64 1:1.0.1e-51.el7_2.4 openssl-libs.x86_64 1:1.0.1e-51.el7_2.4
    Complete!

    이제 MariaDB CentOS 리포지토리를 추가합니다.

    nano를 사용하여 새 MariaDB 저장소 파일 /etc/yum.repos.d/mariadb.repo를 만듭니다.

    nano /etc/yum.repos.d/MariaDB.repo

    그리고 CentOS-6 32비트에 대해 다음 텍스트를 붙여넣습니다.

    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.0/centos6-x86
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1

    또는 CentOS-6 64비트의 경우 다음 텍스트를 붙여넣으세요.

    name = MariaDB
    baseurl = http://yum.mariadb.org/10.0/centos6-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1

    그런 다음 Ctrl+X를 누른 다음 Y를 눌러 파일을 종료하고 저장합니다.

    위의 예에서 볼 수 있듯이 MariaDB가 리포지토리에 서명하는 데 사용하는 GPG 키를 자동으로 가져오는 gpgkey 행이 포함되어 있습니다. 이 키는 패키지 다운로드의 무결성을 확인하는 데 필요합니다.

    참고: MariaDB 저장소 생성기와 함께 사용해야 하는 저장소를 찾으려면

    2단계 – Yum으로 MariaDB 10 설치

    MySQL 제거(설치된 경우에만)

    시스템에 설치되어 있을 수 있는 이전 MySQL 서버 버전을 완전히 제거한 다음 충돌 없이 MariaDB로 업그레이드하는 것이 좋습니다.

    MySQL이 이미 설치되어 있는지 확인하려면 다음 명령을 실행합니다.

    rpm -qa 'mysql*'

    필요한 경우 다음 명령을 사용하여 MariaDB를 설치하기 전에 찾은 MySQL 패키지를 제거할 수 있습니다.

    yum list installed | grep mysql
    yum remove mysql-client mysql-server mysql-common mysql-devel

    그리고 MySQL 데이터베이스를 제거합니다.

    rm -Rf /var/lib/mysql

    MariaDB 10 설치

    표준 서버 설치의 경우 최소한 클라이언트, 공유서버 RPM 파일을 다운로드하여 설치해야 합니다.

    yum install MariaDB-server MariaDB-client -y

    다음과 같은 출력이 표시되어야 합니다.

    Loaded plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirror.net.cen.ct.gov
    * extras: mirror.es.its.nyu.edu
    * updates: mirror.atlanticmetro.net
    Resolving Dependencies
    --> Running transaction check
    ---> Package mariadb.x86_64 1:5.5.44-2.el7.centos will be installed
    --> Processing Dependency: perl(Sys::Hostname) for package: 1:mariadb-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl(IPC::Open3) for package: 1:mariadb-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl(Getopt::Long) for package: 1:mariadb-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl(File::Temp) for package: 1:mariadb-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl(Fcntl) for package: 1:mariadb-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl(Exporter) for package: 1:mariadb-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: /usr/bin/perl for package: 1:mariadb-5.5.44-2.el7.centos.x86_64
    ---> Package mariadb-server.x86_64 1:5.5.44-2.el7.centos will be installed
    --> Processing Dependency: perl-DBI for package: 1:mariadb-server-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl-DBD-MySQL for package: 1:mariadb-server-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl(File::Path) for package: 1:mariadb-server-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl(Data::Dumper) for package: 1:mariadb-server-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: perl(DBI) for package: 1:mariadb-server-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: libaio.so.1(LIBAIO_0.4)(64bit) for package: 1:mariadb-server-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: libaio.so.1(LIBAIO_0.1)(64bit) for package: 1:mariadb-server-5.5.44-2.el7.centos.x86_64
    --> Processing Dependency: libaio.so.1()(64bit) for package: 1:mariadb-server-5.5.44-2.el7.centos.x86_64
    [...]
    Installed:
    mariadb.x86_64 1:5.5.44-2.el7.centos mariadb-server.x86_64 1:5.5.44-2.el7.centos
    Dependency Installed:
    libaio.x86_64 0:0.3.109-13.el7 perl.x86_64 4:5.16.3-286.el7
    perl-Carp.noarch 0:1.26-244.el7 perl-Compress-Raw-Bzip2.x86_64 0:2.061-3.el7
    perl-Compress-Raw-Zlib.x86_64 1:2.061-4.el7 perl-DBD-MySQL.x86_64 0:4.023-5.el7
    perl-DBI.x86_64 0:1.627-4.el7 perl-Data-Dumper.x86_64 0:2.145-3.el7
    perl-Encode.x86_64 0:2.51-7.el7 perl-Exporter.noarch 0:5.68-3.el7
    perl-File-Path.noarch 0:2.09-2.el7 perl-File-Temp.noarch 0:0.23.01-3.el7
    perl-Filter.x86_64 0:1.49-3.el7 perl-Getopt-Long.noarch 0:2.40-2.el7
    perl-HTTP-Tiny.noarch 0:0.033-3.el7 perl-IO-Compress.noarch 0:2.061-2.el7
    perl-Net-Daemon.noarch 0:0.48-5.el7 perl-PathTools.x86_64 0:3.40-5.el7
    perl-PlRPC.noarch 0:0.2020-14.el7 perl-Pod-Escapes.noarch 1:1.04-286.el7
    perl-Pod-Perldoc.noarch 0:3.20-4.el7 perl-Pod-Simple.noarch 1:3.28-4.el7
    perl-Pod-Usage.noarch 0:1.63-3.el7 perl-Scalar-List-Utils.x86_64 0:1.27-248.el7
    perl-Socket.x86_64 0:2.010-3.el7 perl-Storable.x86_64 0:2.45-3.el7
    perl-Text-ParseWords.noarch 0:3.29-4.el7 perl-Time-HiRes.x86_64 4:1.9725-3.el7
    perl-Time-Local.noarch 0:1.2300-2.el7 perl-constant.noarch 0:1.27-2.el7
    perl-libs.x86_64 4:5.16.3-286.el7 perl-macros.x86_64 4:5.16.3-286.el7
    perl-parent.noarch 1:0.225-244.el7 perl-podlators.noarch 0:2.5.1-3.el7
    perl-threads.x86_64 0:1.87-4.el7 perl-threads-shared.x86_64 0:1.43-6.el7
    Complete!

    설치 프로세스가 완료되면 MariaDB를 시작할 수 있습니다. MariaDB 서비스 이름은 \mysql\이므로 아래 명령은 오타가 아닙니다.

    service mysql start
    Starting MySQL. SUCCESS!

    부팅할 때마다 MariaDB를 시작하려면 이 명령을 실행합니다.

    chkconfig mysql on

    다음 명령을 사용하여 MariaDB 설치 버전을 확인할 수 있습니다.

    mysql -V
    mysql Ver 15.1 Distrib 10.0.24-MariaDB, for Linux (x86_64) using readline 5.1

    여태까지는 그런대로 잘됐다!

    3단계 – MariaDB 보안

    기본적으로 MariaDB는 강화되지 않습니다. mysql_secure_installation 스크립트를 사용하여 MariaDB를 보호할 수 있습니다. 아래 단계를 주의 깊게 읽어야 합니다. 루트 비밀번호를 설정하고, 익명 사용자를 제거하고, 원격 루트 로그인을 허용하지 않고, 테스트 데이터베이스와 보안 MariaDB에 대한 액세스를 제거합니다. 모든 관리자는 이 스크립트를 실행하여 MySQL 설치가 안전한지 확인하는 것이 좋습니다. 불행하게도 스크립트는 대화식이며 루트 암호를 묻는 메시지를 표시하므로 빌드 프로세스에 쉽게 포함될 수 없습니다. 이러한 옵션에 라고 대답하는 것이 좋습니다. MariaDB 기술 자료에서 스크립트에 대한 자세한 내용을 읽을 수 있습니다.

    인수 없이 mysql_secure_installation을 호출합니다.

    mysql_secure_installation

    이렇게 하면 질문-답변 방법에서 작동하는 절차가 시작되고 MariaDB 설치에 일부 맞춤설정을 적용할 수 있습니다. 다음은 발생하는 상황과 사용해야 하는 몇 가지 권장 옵션의 예입니다.

    NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
    SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!

    보안을 위해 MariaDB에 로그인하려면 루트 사용자의 현재 암호가 필요합니다. 방금 MariaDB를 설치했고 아직 루트 암호를 설정하지 않은 경우 기본 암호가 비어 있으므로 여기에서 Enter 키를 누르기만 하면 됩니다.

    Enter current password for root (enter for none):  
    OK, successfully used password, moving on...

    루트 암호를 설정하면 아무도 적절한 권한 없이 MariaDB 루트 사용자에 로그인할 수 없습니다.

    Set root password? [Y/n] y
    New password: ENTER YOUR PASSWORD
    Re-enter new password: REPEAT YOUR PASSWORD
    Password updated successfully!
    Reloading privilege tables..
    ... Success!

    기본적으로 MariaDB 설치에는 익명의 사용자가 있으므로 누구나 사용자 계정을 만들지 않고도 MariaDB에 로그인할 수 있습니다. 이는 테스트용이며 설치를 좀 더 원활하게 진행하기 위한 것입니다. 프로덕션 환경으로 이동하기 전에 익명 로그인을 제거해야 합니다.

    Remove anonymous users? [Y/n] y
    ... Success!

    일반적으로 root는 localhost에서만 연결을 허용해야 합니다. 이렇게 하면 누군가가 네트워크를 통해 루트 암호를 추측할 수 없습니다.

    Disallow root login remotely? [Y/n] y
    ... Success!

    기본적으로 MariaDB에는 누구나 액세스할 수 있는 test라는 데이터베이스가 함께 제공됩니다. 이것은 또한 테스트용이며 프로덕션 환경으로 이동하기 전에 제거해야 합니다.

    Remove test database and access to it? [Y/n] y
    - Dropping test database...
    ... Success!
    - Removing privileges on test database...
    ... Success!

    권한 테이블을 다시 로드하면 지금까지 이루어진 모든 변경 사항이 즉시 적용됩니다.

    Reload privilege tables now? [Y/n] y
    ... Success!
    Cleaning up...
    All done! If you've completed all of the above steps, your MariaDB installation should now be secure.
    Thanks for using MariaDB!

    이제 MariaDB를 다시 시작해야 합니다.

    service mysql restart
    Shutting down MySQL.. SUCCESS!
    Starting MySQL. SUCCESS!

    그게 다야. MariaDB 서버에 로그인하고 이전 데이터베이스와 테이블을 확인합니다(MySQL에서 업그레이드한 경우).

    MariaDB에 연결하려면 아래 명령을 실행하십시오.

    mysql -u root -p

    이 경우 -u 플래그로 사용자 루트를 지정한 다음 -p 플래그를 사용하여 MySQL이 암호를 묻는 메시지를 표시합니다.

    메시지가 표시되면 mysql_secure_installation 스크립트로 할당한 비밀번호를 입력하기만 하면 됩니다.

    그러면 환영 헤더와 MariaDB 프롬프트가 표시됩니다.

    MariaDB 명령어 목록을 보려면 프롬프트에 help 또는 \\h를 입력하세요.

    General information about MariaDB can be found at
    http://mariadb.org
    List of all MySQL commands:
    Note that all text commands must be first on line and end with ';'
    ? (\?) Synonym for `help'.
    clear (\c) Clear the current input statement.
    connect (\r) Reconnect to the server. Optional arguments are db and host.
    delimiter (\d) Set statement delimiter.
    edit (\e) Edit command with $EDITOR.
    ego (\G) Send command to mysql server, display result vertically.
    exit (\q) Exit mysql. Same as quit.
    go (\g) Send command to mysql server.
    help (\h) Display this help.
    nopager (\n) Disable pager, print to stdout.
    notee (\t) Don't write into outfile.
    pager (\P) Set PAGER [to_pager]. Print the query results via PAGER.
    print (\p) Print current command.
    prompt (\R) Change your mysql prompt.
    quit (\q) Quit mysql.
    rehash (\#) Rebuild completion hash.
    source (\.) Execute an SQL script file. Takes a file name as an argument.
    status (\s) Get status information from the server.
    system (\!) Execute a system shell command.
    tee (\T) Set outfile [to_outfile]. Append everything into given outfile.
    use (\u) Use another database. Takes database name as argument.
    charset (\C) Switch to another charset. Might be needed for processing binlog with multi-byte charsets.
    warnings (\W) Show warnings after every statement.
    nowarning (\w) Don't show warnings after every statement.
    For server side help, type 'help contents'

    생성한 현재 데이터베이스 목록을 보려면 다음 명령을 사용하십시오.

    SHOW DATABASES;
    +--------------------+
    | Database |
    +--------------------+
    | information_schema |
    | mysql |
    | performance_schema |
    | test |
    +--------------------+
    4 rows in set (0.01 sec)

    "information_schema", "performance_schema" 및 "mysql" 데이터베이스는 기본적으로 설정되며 MariaDB 서버의 시스템 데이터를 포함합니다. 이러한 테이블은 수행 중인 작업을 알지 못하는 한 그대로 두어야 합니다.

    데이터베이스 서버의 상태를 확인하십시오.

    status;
    mysql Ver 15.1 Distrib 5.5.44-MariaDB, for Linux (x86_64) using readline 5.1
    Connection id: 14
    Current database:
    Current user:
    SSL: Not in use
    Current pager: stdout
    Using outfile: ''
    Using delimiter: ;
    Server: MariaDB
    Server version: 5.5.44-MariaDB MariaDB Server
    Protocol version: 10
    Connection: Localhost via UNIX socket
    Server characterset: latin1
    Db characterset: latin1
    Client characterset: utf8
    Conn. characterset: utf8
    UNIX socket: /var/lib/mysql/mysql.sock
    Uptime: 47 min 9 sec
    Threads: 1 Questions: 32 Slow queries: 0 Opens: 4 Flush tables: 2 Open tables: 30 Queries per second avg: 0.011
    --------------
    MariaDB [(none)]>

    데이터베이스를 생성한다고 해서 사용할 데이터베이스가 선택되는 것은 아닙니다. 명시적으로 수행해야 합니다. 현재 데이터베이스를 만드는 방법을 만들려면 다음 문을 사용하세요.

    USE howtoforge

    데이터베이스는 한 번만 생성하면 되지만 MySQL 세션을 시작할 때마다 사용할 데이터베이스를 선택해야 합니다. 예제에 표시된 대로 USE 문을 실행하여 이를 수행할 수 있습니다. 또는 MySQL을 호출할 때 명령줄에서 데이터베이스를 선택할 수 있습니다. 제공해야 할 수도 있는 연결 매개변수 뒤에 이름을 지정하기만 하면 됩니다. 예를 들어:

    mysql -h host -u user -p howtoforge

    참고: 모든 데이터베이스 이름, 테이블 이름, 테이블 필드 이름은 대소문자를 구분합니다. 따라서 SQL 명령을 제공하는 동안 적절한 이름을 사용해야 합니다.

    기본적으로 명령줄을 통해 실행되는 모든 MySQL 작업은 현재 선택된 데이터베이스에서 수행됩니다. 현재 어떤 데이터베이스가 선택되어 있습니까? 문제를 찾으려면 다음 명령을 실행하십시오.

    SELECT database();

    결과는 다음과 유사할 수 있습니다.

    +------------+
    | database() |
    +------------+
    | NULL |
    +------------+
    1 row in set (0.00 sec)
    MariaDB [(none)]>

    결과는 null이며 데이터베이스가 현재 선택되지 않았음을 의미합니다.

    따라야 할 추가 정보

    이 주제에 대한 추가 정보는 다음 리소스를 참조할 수 있습니다. 이러한 자료가 유용하기를 바라며 제공되지만 외부 호스팅 자료의 정확성이나 적시성은 보장할 수 없습니다.

    • MariaDB 문서
    • MySQL 참조 설명서