본문 바로가기
데이터베이스

MariaDB 설치와 접속

by 쏘세지입술 2023. 8. 6.
반응형

 

설치

 

 

MariaDB를 설치에 필요한 모든 파일은 https://mirror.mariadb.org/yum/10.9.7/centos8-amd64/rpms/ 에서 찾아볼 수 있다. 

다운로드하여야 할 파일은 총 4개이다. 참고로 이건 컴퓨터가 리눅스일 때 이야기고 윈도라면 1개의 파일에 서버와 클라이언트가 모두 포함되어 있으므로 설치 중간에 필요한 내용을 선택해서 설치해야 한다. 

  • galeria: Galera 클러스터를 줄여 말하는거 같다. 인터넷에서 찾아본 결과 '데이터 공유가 없는 새로운 유형의 고가용성 설루션'이라고 하는데 그냥 간단하게 데이터 베이스에 문제가 생겼을때를 대비한 고가용성 기능이라고만 생각해두면 편할 거 같다. 실제 Galera Cluster의 기능 중에는 동기식 복제, Fail-Over, 등등이 있다. 
  • MariaDB-client: 말 그래도 mariaDB 클라이언트가 다운받아야 하는 패키지
  • MariaDB-common: mariaDB의 설정 파일들이 있는 패키지라고 한다. 
  • MariaDB-server: mariaDB 서버가 다운 받아야 하는 패키지

이렇게 다운받고 다운로드 폴더에 가서 dnf 혹은 yum으로 설치한다. (ex. dnf/yum -y install ga*. rpm mariaDB*. rpm)

** CentOS 8에 포함된 서버 패키지를 dnf 명령으로 설치하면 /lib/systemd/system 디렉터리에 서비스이름. service 또는 서비스이름. socket으로 등록된다 **

 

항상 어떤 패키지던 설치 후에는 서비스 시작해 주고 상시 가동되어야 하는 데몬이라면 enable 시켜서 상시 가동 시키고 마지막으로 확인까지 시켜준다. 

  • Systemctl restart mariadb
  • Systemctl enable mariadb
  • Systemctl status mariadb

서비스 가동 확인했다면 다음으로 해줘야 할 건 방화벽에서 특정 서비스 허용시켜 준다. firewall-config 명령어로 GUI 형태로 허용해 줄 수도 있지만 난 터미널에서 방화벽 여는 게 더 멋있는 거 같아서 아래 명령어를 더 자주 사용한다. 

  • firewall-cmd --permanent --add-service=mysql
  • firewall-cmd --reload -> 방화벽 수정 후에는 항상 리로드 시켜준다

 


접속
데어터 베이스 접속에서 알아두어야 할 필수 개념이 있다. 
당연히 보안 측면에서 아무나 접근할 수 있게 만들어놓으면 안될것이다. 다시말해 허가받은 사용자만 접근할수 있어야 한다. 

리눅스 설치할 때 별도로 사용자를 생성하지 않아도 'root'라는 사용자는 자동으로 만들어진다. 
동일한 개념으로 데이터베이스도 설치와 동시에 'root'라는 사용자가 생성이 되고 비밀번호는 지정하지 않은 상태가 디폴트이다. 

원래라면 'mysql -h 접속할 컴퓨터 -u DB사용자이름 -p' 명령어로 비밀번호를 입력하고 데이터 베이스에 접속하지만
mariaDB 설치 후 터미널에 'mysql'이라고만 쳐도 바로 db에 들어가지는 걸 알 수 있다. 
이는 mariaDB가 설치된 컴퓨터를 현재 컴퓨터로 간주하고 현재 운영체제의 사용자가 같은 이름인 root 사용자의 권한으로 비밀번호 없이 접속하게 된다

그러므로 mariaDB 서버를 설치한 직후에는 데이터베이스 사용자 root의 비밀번호를 먼저 지정하여 데이터베이스 보안의 기본을 지켜야 한다.
다음과 같은 명령어로 말이다
 - mysqladmin -u root password 'password';

 

* MariaDB는 이메일 주소와 비슷한 형식으로 사용자 이름을 사용한다.

즉 '사용자이름@호스트이름 또는 IP주소' 형식으로 사용자를 관리한다.* 

위에 사진은 mysql이란 database 안에 user라는 테이블 안에 있는 두 개의 속성 user와 host를 보여주는 것인데 'root' 유저의 host는 localhost라고 명시된 있는 걸 볼 수 있다.

 

그러므로 root의 정식이름은 'root@localhost' 또는 'root@127.0.0.1'이 되는 것이다. 

 

만약 mariaDB 서버의 IP주소가 '172.16.71.100'이라고 하고 클라이언트 IP주소가 '172.16.71.200'일 때

클라이언트가 mysql -h 172.16.71.100 -u root -p 명령을 입력해도 접속이 거부되는 이유는

클라이언트의 IP주소는 '172.16.71.200'이기 때문에 'root@172.16.71.200'으로 연결이 요청되는 것이다.

 

그래서 winuser라는 유저와 host를 172.16.71.%으로 설정해서 172.16.71 서브넷에 있는 유저들은 'winuser'라는 유저로 로그인할 수 있게 만들어 놓은 것이다. 

 

=>즉, 데이터베이스 사용자 이름과 비밀번호만 안다고 아무 컴퓨터에서나 접속할 수 없게 설정하는 것이다. MariaDB 서버에 접속하려면 접속하는 컴퓨터까지 지정해 놓은 곳에서만 접속해야 한다.

 

=> GRANT ALL ON *.* TO winuser@'172.16.71.%' identified by '4321'; 명령어 입력 후 클라이언트는 'mysql -u winuser -p 4321'로 데이터베이스에 접속할 수 있다. 

반응형

댓글