CentOS7에 MariaDB 설치 및 설정

김규연·2023년 3월 3일
0

linux

목록 보기
2/11

MariaDB를 기본 yum install mariadb로 설치했을 경우 5.5 버전이 설치된다.
따로 repository를 설정해야 상위버전을 설치할 수 있다.

1. mariadb repo 파일을 만든다.

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

tab 키를 이용하면 쉽게 폴더작성이 가능하다. (폴더가 존재할 경우에만)

i 입력하여 편집모드로 바꾼 후 아래 내용을 복사해서 붙여넣는다.


[mariadb]
name = MariaDB
baseurl = https://archive.mariadb.org/mariadb-10.1/yum/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1


편집종료(ESC키 입력)하고 저장 후 종료(:wq 입력)

2. yum 으로 mariadb를 설치한다.

yum install -y MariaDB MariaDB-server MariaDB-client

옵션 -y : 설치 과정에서 묻는 질문들에 모두 yes를 입력하도록 한다.

3. 서버설정파일을 설치된 설정파일로 변경한다.

cp /usr/share/mysql/my-medium.cnf /etc/my.cnf

"cp: overwrite `/etc/my.cnf'? y"

4. UTF-8, max_allowed_packet 1G 및 테이블명 대소문자 구분안하도록 설정을 추가한다.

vi /etc/my.cnf

[mysqld]를 찾아서 그 아래에 추가 또는 수정해준다


[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
max_allowed_packet=1073741824
lower_case_table_names=1


편집 종료 후 저장, 종료한다.

  • 편집시 편집된 내용 위에 주석(#)으로 추가한 내용에 대한 제목, 이름이니셜, 추가한 날짜/시간을 같이 등록해준다.
    ex) # UTF-8, max_allowed_packet (KGY 2023-02-34-14:40)

5. mariadb 서버 시작

systemctl start mariadb 
또는 
service mariadb start
  • 서버 동작 확인 : systemctl status mariadb.service
  • 부팅시 자동시작되도록 하려면 : systemctl enable mariadb

6. root 패스워드, 보안 등 한번에 설정하기

mysql_secure_installation
  • Enter current password for root (enter for none)
    : 초기 비번이 없으니 그냥 Enter'

  • Set root password? [Y/n]
    : root 패스워드 설정하겠는지 물을때 Y

  • New password:
    Re-enter new password:
    : 원하는 root 패스워드를 입력한다.

  • Remove anonymous users? [Y/n]
    : anonymous계정을 삭제할래? Y

  • Disallow root login remotely? [Y/n]
    : 원격으로 root 로그인 허용할거니? Y

  • Remove test database and access to it? [Y/n]
    : 테스트데이터베이스 지울꺼야? Y

  • Reload privilege tables now? [Y/n]
    : 권한 테이블을 다시 로그할거니? Y

7. mysql 를 root 계정으로 접속해본다.

mysql -u root -p

8. database 생성

create database [데이터배이스명] default character set utf8 collate utf8_general_ci;

  • 잘 만들어졌는지 확인
    show databases;

9. 유저생성/권한셋팅

유저생성

create user '유저아이디'@'ip주소/localhost'identified by '비밀번호';

권한

GRANT ALL PRIVILEGES ON *.* TO '유저아이디'@'ip주소' IDENTIFIED BY '유저비밀번호' WITH GRANT OPTION;

DB 사용자권한보기

SHOW GRANTS FOR '사용자계정'@'IP주소';

현재 생성된 함수나 프로시져 목록

SELECT * FROM infornation_schema.ROUTINES;

SP 권한주기

GRANT SELECT, INSERT, UPDATE, DELETE ON mysql.proc TO 'DB유저'@'호스트';

모든 권한을 주기를 원한다면 아래와 같은 방법을 사용하는 것이 편리

mysql> GRANT ALL PRIVILEGES on DB명.* TO 'id'@'localhost';
mysql> GRANT ALL PRIVILEGES on DB명.* TO 'id';
mysql> GRANT ALL PRIVILEGES on DB명.* TO 'id'@'ip주소';

DB user 보기

select host, user, password from mysql.user;

모든과정을 끝낸 후에는

flush privileges;

를 해준다.


DBeaver를 이용해서 리눅스 환경에 접속해보기

Server Host : ip주소
Port : 3306
Database : 리눅스 서버에서 설정한 databse 입력

Username : 리눅스 서버에서 설정한 username 입력
Password : 리눅스 서버에서 설정한 password 입력

다음과 같은 에러가 발생하면 방화벽을 하용해주자.

방화벽에 포트 추가/제거하기

firewall-cmd --permanent --zone=public --add-port=[포트번호]/[프로토콜]
ex) firewall-cmd --permanent --zone=public --add-port=3306/tcp

항상 설정 후에는

firewall-cmd --reload

방화벽에 허용한 포트/서비스 목록 확인

firewall-cmd --list-ports / --list--services

만약 위 경우도 안된다면
netstat명령어를 통해 호스트에 장착된 네트워크 인터페이스(연결상테, 프로토콜 등) 상태를 확인한다.

127.0.0.1로 나오면 localhost에서는 접속이 되지만 원격 IP에서는 접속이 안된다.

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

bind-address = 127.0.0.1 를 주석처리하고
bind-address = 0.0.0.0 을 추가하고 저장한다.

마지막으로 변경사항을 저장하기 위해 MariaDB를 재시작한다.

또한 다음과 같은 에러가 발생하면 아래와 같이 처리해주자.

GRANT ALL PRIVILEGES ON *.* TO '유저아이디'@'내ip주소' IDENTIFIED BY '유저비밀번호' WITH GRANT OPTION;
profile
오늘도 뚠뚠 개미 개발자

0개의 댓글