MariaDB

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2022년 10월 23일 (일) 10:59 판
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)
둘러보기로 이동 검색으로 이동

개요

마리아DB. MySQL을 개발했던 개발자가 이를 썬 마이크로시스템에 팔았는데, 이 회사가 오라클에 인수된 이후 폐쇄적인 정책으로 MySQL이 발전하지 못하는 모습을 본 후 퇴사하여 MariaDB를 개발하여 GPL라이센스로 배포했다.

기본적으로 MySQL과 동일하게 쓰인다.

자잘한 조작법은 MySQL을 참고하자.

설치

우분투에서

과정 설명 방법
설치 서버와 클라이언트. 필요에 따라. apt-get install mariadb-server

apt-get install mariadb-client

서버 실행 다음과 같은 명령어로 서버 실행 sudo service mariadb start
heidisql 마리아DB를 설치하면 이와 함께 GUI기반인 heidisql(헤이디에스큐엘)이 설치된다. 해당 포트와 root 비밀번호를 제대로 기입하면 GUI로 DB를 볼 수 있다.

설치 후 작업

과정 설명 방법
부팅 시 자동실행 부팅이 되면 자동 실행되게끔. sudo systemctl enable mariadb

mysql 포트 확인

mysql에 접속한 후 mysql> show global variables like 'port'; 명령어로 사용하고 있는 포트번호를 알 수 있다.(일반적으로 3306)

자동실행

보통 서버가 실행되면 자동 실행되지만, 그렇지 않은 경우 sudo systemctl enable mysql을 해보자.

기본 사용

기본적으로 mysql과 동일하다.

의도 설명 방법
접속 루트 계정으로 접속한다.

이외 계정은 mysql -u 계정 -p

sudo mysql -u root -p
접속종료 quit;

SQL는 다음을 참고해 사용하자.

SQL에 대한 자료를 모아놓기 위한 틀 틀:SQL

  1. SQL
  2. SQL:변수
  3. SQL:DB 조작
  4. SQL:TABLE 조작
  5. SQL:DATA 조작
  6. SQL:활용
    1. SQL:유저 관련

외부에서 접속(원격접속)

기본적으로 접속은 localhost에서만 가능하다. 외부접속을 위해선 2가지 과정이 필요하다.

과정 설명
외부에서 접속 가능한 계정 만들기 mysql -u root -p 로 mysql을 실행한 후 SELECT User, Host, plugin FROM mysql.user;를 쳐보면, Host가 localhost로 되어있을 것이다.

새로운 ip에 맞게 유저를 만들어주어야 한다.(같은 유저라도 호스트에 따라 다른 계정이 된다.)

과정 설명
계정 만들기 CREATE USER '계정명'@'%' IDENTIFIED BY '비밀번호';


계정명 뒤의 옵션에 따라 허용해주는 ip가 달라진다.

옵션 설명
% 모든 아이피 허용
111.222.% 111.222로 시작하는 아이피 모두 허용
111.222.11.22 111.222.11.22만 허용
권한부여 *.* 은 모든 DB의 모든 table을 의미한다. GRANT ALL PRIVILEGES ON *.* TO '계정'@'%';
인증비밀번호설정 비밀번호까지 다시 설정해주어야 제대로 된다. alter user '계정'@'%' identified with mysql_native_password by '비밀번호';
바인드주소 지우기 cd /etc/mysql/mysql.conf.d 에서 mysqld.cnf 파일을 편집한다.(버전, 운영체제 버전에 따라 다를 수 있다.)

바인드 어드레스를 다음과 같이 주석처리한 후 저장. #bind-address = 127.0.0.1

이후 sudo service mysql restart


백업과 복원

DB백업

sql 파일로 백업한다.

mysqldump -u 사용자계정 -p 백업할DB명 > 저장할파일명.sql

'액세스가 거부되었습니다.'라는 문구가 나온다면 일반적으로 해당 경로에 저장이 불가하다는 의미. C:\Users\유저명\Downloads\파일명.sql 따위의 경로를 지정하자.

정상적으로 명령이 기입되면 패스워드를 입력하는 란이 나오고 백업이 진행된다.(용량이 큰 경우 멈춘 것처럼 보인다. 프롬프트 커서는 깜빡이고 있다.)

상황 방법
전체 DB를 한번에 저장하고자 할 때 DB이름을 넣는 대신 -A옵션을 준다.

--extended-insert

DB복구

복구할 때 복구할 DB가 미리 만들어져 있어야 한다.

mysql -u 사용자계정 -p 복구할DB명 < 저장한파일명.sql

정상적으로 명령이 기입되면 백업 때와 동일하게 진행된다. 기존 데이터는 삭제된다.

최적화

데이터베이스 최적화를 하면 데이터가 찾기 쉽게 정리된다.

의도 설명 방법
DB최적화 다음의 명령을 수행한다. mysqlcheck -u DB계정 -p --optimize DB이름
전체 최적화 mysqlcheck -u DB계정 -p --optimize --all-databases

엑셀로 보기

에러

10061

로컬에서 에러가 난 경우는 계정정보가 잘못되었거나 sql 서버가 열리지 않았을 때의 이유로 생긴다.

로컬에선 되는데, 외부에서 접속이 안되는 경우, 다음의 조치를 취해보자.(외부접속 계정은 이미 만들었다고 가정한다.)

과정 설명 방법
설정파일 변경 다음의 경로에서 bind-address 옵션을 찾아 주석처리하자. sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf
재시작 설정을 반영한다. service mysql restart

ERROR 2002 (HY000): Can't connect to local server through socket '/run/mysqld/mysqld.sock' (2)

여러 이유로 mysqld.sock 위치를 잃어버린 경우.

과정 설명 방법
mysqld.sock위치찾기 mysql_config --socket
심볼릭 링크 지정 위에서 찾은 경로의 파일을 에러로 뜬 곳에 링크해준다. sudo ln -s /var/run/mysqld/mysqld.sock /run/mysqld/mysqld.sock