작성한 순서대로 한 거 아니고 걍 따로 작업했던 거 따로따로 정리한 것임
● 설치
* root 권한이 아니어서 다 sudo로 권한 끌어와서 진행 함
1. mariadb repository setting
$ sudo vi /etc/yum.repos.d/MariaDB.repo 에 아래 내용 저장
(버전에 따라 쪼금씩 내용이 다른데, mariadb 홈페이지 드가서 repository 부분 보면 하단 내용 다 있음)
# MariaDB 10.5 CentOS repository list - created 2022-11-03 07:15 UTC
# https://mariadb.org/download/
[mariadb]
name = MariaDB
baseurl = https://tw1.mirror.blendbyte.net/mariadb/yum/10.5/centos7-amd64
gpgkey=https://tw1.mirror.blendbyte.net/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1
2. mariadb 다운로드
$ sudo yum install MariaDB
- 다운로드 후 $ rpm -qa | grep MariaDB 하여 결과 확인
MariaDB-common-10.5.18-1.el7.centos.x86_64
MariaDB-client-10.5.18-1.el7.centos.x86_64
MariaDB-server-10.5.18-1.el7.centos.x86_64
MariaDB-compat-10.5.18-1.el7.centos.x86_64
- 다운로드 후 $ mariadb --version 으로 버전 확인
mariadb Ver 15.1 Distrib 10.5.18-MariaDB, for Linux (x86_64) using readline 5.1
3. mariadb 시작
$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb
● 외부 접속 허용
사용할 database 셋팅 - 우리는 mysql 설정을 건들거기 때문에 mysql로 셋팅
MariaDB [(none)]> use mysql;
MariaDB [(mysql)]> show tables;
전체 테이블 목록을 보면 이것저것 있는데 user가 있을 거임
user의 접속 허용에 대해 변경을 할 예정이니 우선 어케되어 있는지 확인해보기
이런식으로 유저는 추가 할 수 있고
MariaDB [mysql]> insert into mysql.user(host, user, ssl_cipher, x509_issuer, x509_subject, authentication_string) values ('%', 'root', '', '', '', password('패스워드'));
root로 접속했을 때에는 어디서 어떤 아이피로 접속하든 모든 데이터베이스와 테이블에 접속 가능하도록 설정MariaDB [mysql]> grant all privileges on *.* to 'root'@'%' identified by '패스워드';
▶ *.* 에서 앞에 *은 DB, 뒤의 *은 TABLE명임 [DB].[TABLE]
ex) grant all privileges on test_database.some_table to 'root'@'%';
▶ 'root'@'%'에서 앞의 root는 user이고, 뒤의 %는 host이다.
ex) grant all privileges on test_database.some_table to 'newuser1'@'111.222.%';
= 111.222.로 시작하는 ip로 접속한 newuser1 계정을 사용하는 user는
test_database 데이터베이스의 some_table이라는 테이블에 접속 가능
그리고 끝에는 항상 이제까지 변경사항 커밋을 위해 FLUSH PRIVILEGES 해주기
MariaDB [mysql]> FLUSH PRIVILEGES;
● 덤프 뜨고 풀기
뜨기: $ mysqldump -u root -p 덤프 뜰 데이터베이스 명 > 덤프 파일 이름.sql
풀기: $ mysql -u root -p 덤프 부을 데이터베이스 명 < 덤프 파일 이름.sql
※ 전에 작업할 때 풀 때에도 mysqldump로 명령어 잘못치고는,
덤프 작업이 주석만 하고 completed 되버리길래 뭐지? 했는데
풀 때에는 mysql 임!! 확인 필요
● my.cnf 설정
기본적으로 db는 stop 시켜놓고 진행하자
$ systemctl stop mariadb
그리고 보통 설치에 따라 조금씩 경로는 다르지만
내 경우에는 $ vi /etc/my.cnf 로 my.cnf 열어서 셋팅함
[mysqld]
default-time-zone='Asia/Seoul'
default-storage-engine=InnoDB
init-connect='SET NAMES utf8mb4'
lower_case_table_names=1
character-set-server=utf8mb4
collation-server=utf8mb4_general_ci
(나는) 기본적으로 다른 셋팅 없이 기본으로 이것만 하는데
혹시 default-time-zone 셋팅했다가
: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (111)
에러 뜬다면
$ systemctl status mariadb 해서 오류 내용 확인하고
혹시 Illegal or unknown default time zone 'Asia/Seoul' 에러가 보인다면
$ mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql -p
명령어를 쳐서 서버 내에 있는 타임존을 mysql에도 적용해주는데
여기서 | mysql -u root mysql << 이거 데이터베이스 이름이라서 빼면 안됨
(나는 헷갈려서 잘 모르고 빼버렸다가 정상 작동 안해서 한참 고생함)
이러고도 안되면
$ mysql_tzinfo_to_sql /usr/share/zoneinfo/Asia/Seoul KST
이것까지 해주니까 나는 잘 됐음
그리고 db서버 재기동
$ systemctl start mariadb
'개발 > DB' 카테고리의 다른 글
[ORACLE] MERGE INSERT UPDATE 문 (0) | 2019.10.02 |
---|---|
[ORACLE] 월별 사용자 COUNT 조회하기 (0) | 2019.08.16 |
[ORACLE] Ibatis 소스와 DB툴 select 쿼리 리턴 결과가 다를 때 (0) | 2019.08.12 |
[ORACLE] 오라클 ORA-02289: 시퀀스가 존재하지 않습니다. (8) | 2019.02.14 |
[ORACLE] NVL, DECODE (0) | 2019.01.01 |