Spring Projcect/학습 관리 시스템 & 백오피스 구축

Chapter 04. MariaDB 설치 및 환경설정

계란💕 2022. 8. 9. 15:40

4.1 MariaDB 설치 및 환경설정(Windows)

  1) 아래와 같이 설정하고 다운로드 

 

  2) C: 드라이브에 dev라는 폴더를 만들고 압축 파일을 가져온다.

    - 압축 풀어준다.

 

    Note) cmd 명령어

  • cd(change directory): 폴더 경로를 이동한다.
  • ".": 현재 경로
  • "..": 상위 경로
  •  '\': 경로를 구분 짓는다.
  • dir: 현재 경로의 폴더와 파일 목록을 보여준다. 
  • Tab: 경로를 입력할 때, 입력한 문자에 대한 유사한 폴더를 입력해준다. 
  • cls: 지금까지 실행한 명령어를 안 보이도록 지운다.
  • dir /w: 기다란 목록을 세 줄로 보여준다.
  • sc start MariaDB: 서비스명이 MariaDB인 서비스를 시작한다.
  • sc stop MariaDB: 서비스명이 MariaDB인 서비스를 종료한다.
  • sc query MariaDB: 서비스명이 MariaDB의 상태를 볼 수 있다.
  • exit: 명령 프롬프트 창을 종료한다.

 

  3) cmd창을 연다.

    - 아래처럼 C 폴더로 이동한다.

    

    - cd m 까지 누르고 Tab키를 누르면 자동 완성된다. 

 

    - maribd-install-db.exe --help

      -> 서비스로 등록돼야 윈도우즈에 로그인 하지 않고도 실행 가능

 

  Note) OPTIONS

  • --service=name: 서비스(로그인 하지 않고도 자동 실행, ex. 블루투스) 네임 등록, 데이터베이스 서버도 서비스 등록을 안해도 된다. 
  • --password=name: Root에 password를 지정해준다.

 

    - 관리자 권한으로 실행하지 않으면 아래와 같이 오류가 난다. 

 

    - cmd를 작업 표시줄에 고정시킨 다음, Shift 키를 누른 상태로 오른쪽 마우스를 누르면 관리자 권한으로 실행할 수 있다. 

 

    - 그러면 아래와 같이 cmd 창에 "관리자"라는 단어가 추가된다.

=======================================================================

<      -> cd mariadb-install -db.exe -S MariaDB -p zerobase e>

 

    - 서비스를 들어가면 MariaDB를 찾을 수 있다.

      -> 아래과 같이 서비스를 시작하거나 종료할 수 있다.

      -> cmd 창에서도 서비스를 시작하거나 종료할 수 있다. 명령어(sc)

 

 

     - 아래와 같이 입력하면 서비스가 시작된다. 

      -> bin 폴더 안에서도 net start MariaDB  =>마리아 디비 서비스가 시작된다.

 

== 오류 == (서비스 시작했는데 새로고침을 해도 아래처럼 시작이 안됐다고 나온다.)

 

 

    - sc stop MariaDB 입력하면 서비스가 중지된다. 

    - bin 파일 중 "mysql.exe"는 데이터 베이스에 접속하기위한 클라이언트

      -> 관리자 권한 없이 실행한다.

 

 

    - bin폴더에서 주소창에 "cmd"를 입력하고 엔터 누르면

      -> bin위치로 cmd 창이 바로 열린다.

 

 

 

2.2-7 MariaDB 설치 및 환경 설정 (Linux - ubuntu)

  - Linux는 패키지 매니저를 통해 설치한다.

  - ubuntu의 경우 apt, CentOS의 경우 yum(염)을 통해 설치한다.

  - 대부분 서버 환경이다.

 

  1) 터미널을 연다.

    - sudo apt --help를 입력하면 자주 사용되는 명령어 목록이 나온다. 

    - sudo  apt search openssh-server 입력 

      -> 앞으로  openssh-server 를 설치해서 원격 접속할 수 있도록 실행 환경을 만들 수 있다. 

 

  2)  sudo apt install openssh-server 입력하면 아래와 같이 "openssh-server " 설치가 진행된다. (sudo: 관리자 권한 실행,  )

    - 설치가 완료되면 원격에서 ~할 수 있다. 

    - 원격 서버에 접속하기 위해서는 IP, 포트, 계정, 패스워드, 인스턴스 다섯 가지를 알아햐 하는 경우도 있고 인스턴스를 빼고 네 가지만 알아도 되는 경우가 있다. 

      -> Windows: ipconfig를 이용해서 IP를 확인할 수 있다. 

      -> Linux: ifconfig를 통해 확인 가능

 

 

  3) 아래와 같이 sudo apt install net-tools를 입력한다.

    - 그러면 IP 주소를 확인할 수 있다.

    - IP주소를  메모장에  저장해둔다. 172.31.46.95

 

  4) apt search mariadb-server 입력

    - 10.3도 문제 없지만 10.6을 설치해보자.

 
   - cat /etc/*release* 를 입력하면 아래와 같이  ubuntu 20.04가 설치된 걸 볼 수 있다. 

 

 

    - 아래와 같이 설정한다.

 

 

    - 아래 세 개를 한 줄씩 실행한다.

      -> 그 다음 sudo apt update를 통해 목록을 업데이트한다.

 

 

  - 목록을 업데이트 한 다음에, apt search mariadb-server 로 확인해보면 

    -> 10.6이 올라온 걸 확인할 수 있다.

    ->  이후에 10.6을 설치하자.

 

 

2.2-8

  1) sudo get install mariadb-server 입력, Y입력하면 설치가 시작된다. 

 

 

  2) apt show mariadb-server 를 통해 확인한다.

 

 

  3) find / -name mariadb-secure* 로 검색해보면 ( mariadb-secure로 시작하는 모든 파일을 찾는다.)

    - 아래와 같이 권한 때문에 찾을 수 없는 것으로 보인다. 

    - 권한을 바꿔준다.

    - sudo -i 입력하면 root로 권한을 바꿀 수 있다.

       -> find: Linux, Mac에서 파일을 찾는 명령어이다.

 

    - sudo -i로 권한을 변경하고 다시 찾아보면, 아래와 같이 나온다. 

      -> 이를 실행해서 초기화 해보자.

 

   - mariadb-secure-installation 입력한다.

    -> 아직 패스워드가 지정되어 있지 않으므로 엔터 입력

    -> n, Y 차례대로 입력한다.

    -> 그 다음 비밀번호를 설정한다. 입력해도 커서가 깜빡이지 않고 문자가 보이지 않길래 오류인 줄 알았으나 보안 때문에 안 보이도록 되어 있으니 그냥 입력 후 엔터 누르면 된다. 

 

  - Remove anonymous users? Y

  - Disallow root login remotely? n

  - Remove test database and access to it? n

  - Reload priviledge tables now? Y

 

  - 지금까지 원격으로 우분투에 들어간 거라 보면 된다. 

  - 우분투에서 DB에 접속하는 것은 local이 될 것이다.?

 

  - 서비스가 올라와 있는지 확인해보자.

    -> service mariadb restart 입력

    -> service mariadb stop: 

    -> service mariadb start: 

 

  - ps -ef | grep mariadb  입력해서 현재 MariaDB가 잘 올라갔는지 확인 가능한다.

 

  -  netstat -anpt 입력

    -> 포트(?)를 이용해서 확인할 수도 있다.

 

 

  - exit 를 입력하면 root계정을 빠져나올 수 있다.

    (접속이란? 내 ubuntu계정에서 내 ubuntu 계정 서버에 있는 데이터베이스에 접속하는 것이다.)

 

  - mysql -u root -p 입력

    -> ubuntu에 들어가서 ubuntu에서 mysql의 데이터베이스에 접속한 것이다. (mysql.exe는 프로그램에 접속하기 위한 프로그램이다.)

 

  - select version(); 입력하면  버전 확인 가능하다.

  - show databases; => 데이터베이스 목록을 확인 가능

    -> 네 개의 데이터 베이스 확인 가능

 

  - use mysql; => mysql라는 데이터 베이스 사용하겠다.

 

  - show tables; => 현재 테이블 목록 볼 수 있다.

 

  - select Host, User, Password from user; =>  현재 데이터베이스 계정의 user에 대한 정보를 확인 가능

    -??  root만 접속 가능하다? 

 

  - 여기 까지는 ubuntu 서버이다.

 

  - 한번 더 exit 해주면 창이 사라지고 내 컴퓨터에서 로그아웃된다. 

 

 

 

4.2 HeidiSQL 설치

  - https://www.heidisql.com/download.php

     -> 64bit 다운로드한다.

 

    

  - 다운 받은 파일을 dev폴더로 가져온다.

  - Heidi.exe 파일을 실행한다.

    -> 다음과 같이 입력한다.

    -> 내 컴퓨터의 아이피에 계정과 비밀번호를 통해 접속한다는 뜻이다.

 

    

  - 초기화면이 나온다.

 

 

  - 데이터베이스를 만든다.

 

 

=======================================오류 발생 =======================================

   - 데이터베이스에서 root가 아닌 사용자는  데이터베이스에 접근을 허용하지 않는다는 오류가 발생한다.

 

 

 

=======================오류가 나서 다시 43306 포트로 시도한다.=======================

 

    - maria 폴더의 bin 폴더까지 이동한다.

      -> mariadb-install-db.exe --help를 입력한다. 마리아 디비에 옵션을 어떻게 주는지 볼 수 있다.

      -> -S: 서비스 네임

      -> -p: root password

      -> -P: 포트, 마리아db와 mySQL은 동일한 3306 포트를 쓰지만 여러 데이터베이스를  쓸 수 있도록 새로운 포트 43306을 등록한다.

 

 

    

  - mariadb-install-db.exe --service=MariaDB --password=1234 --port=43306

    -> 그런데 이번에는 아까와는 다른 오류가 난다.

 

 

 

============MariaDB 시스템 오류(1067)가 나니까 어디서 나는지 찾아본다. =====================
  - netstat -aop TCP | find ":3306"을 입력하면 3306 포트를 사용 중인 PID 번호(7272)가 나온다.

 

  - 위와 일치하는 PID 번호를 찾아서 작업 종료시킨다.

 

  - net start MariaDB 를 다시 입력하면 다음과 같이 아까와 같은 에러가 난다.

 

 

 


삽질한 결론

  • 내 로컬호스트로는 예전에도 그랬듯이 데이터베이스를 만들고 접근하는데 문제가 있다.
  • AWS에서 만든 IP, 로컬 IP, 127.0.0.1 , 네이버에 검색해서 나오는 내 IP .. 네 가지 모두 접속이 안 된다. 
  • 이유를 찾으려고 여러 방법을 시도해봤지만, 혼자서는 찾을 수 없는 이유로 보인다.
  • MariaDB를 가장 처음 시작했을 때, 초기 설정에서 무언가 실수를 한 것 같은데 그 실수를 찾기가 어려워 접속 가능한 다른 사람의 IP주소를 빌려 이용하기로했다.

 

 

 

 

=========================== 다른 분의  IP주소를 빌려서 다시 로그인하고 데이터베이스 만들기 시도=========================== 

 

 

  - use mysql;

  - show databases;

  - 종료는 exit 또는 quit를 이용한다.

 

  - heidi 프로그램에 접속한다.

 

 

  - create / drop database 를 이용해서 데이데이터베이스를 만들거나 삭제 가능하다.터베이스를 만들거나 삭제 가능하다.

<hide/>
CREATE DATABASE test_db;
SHOW TABLES;
DROP DATABASE test_db;

 

  - mariadb 폴더 => data 폴더 안의 my.ini 파일을 연다.

  - mariadb 윈도우즈 인코딩 설정을한다. my.ini 파일에 다음과 같이 내용을 추가한다.

<hide/>
[mysqld]
datadir=C:/dev/mariadb-10.6.8/data

init_connect="SET collation_connection = utf8_general_ci"
init_connect="SET NAMES utf8"
character-set-server = utf8
collation-server = utf8_general_ci


[client]
plugin-dir=C:\dev\mariadb-10.6.8/lib/plugin
default-character-set = utf8


[mysqldump]
default-character-set = utf8

[mysql]
default-character-set = utf8

 

   

  - 다시 명령 프롬프트로 돌아와서 서버를 켠다. net start MariaDB

 

  - heidi에서 새로운 데이터베이스를 만든다. 아까와는 다르게 조합 부분에 여러 개 중에 선택이 가능하다.

 

 

  - 다음과 같이 사용자 관리자를 추가한다. 사용자 관리자 창을 켜고 아래 창에서 객체 추가를 누른다.

     -> minicampus에 전체 권한을 주거나 할 수 있다.

 

  - 접속 테스트를 해보자.

 

 

  - 그럼 이제 minicampus라는 데이터 베이스를 가지고 프로젝트를 실행할 수 있는 환경이 세팅 완료된다.