본문 바로가기

MySQL, MariaDB

MariaDB 기동 및 서버 로그인

3.1. 서버 시작 및 종료

 

3.1.1.1. 리눅스에서 MariaDB 서버의 시작과 종료

MariaDB 서버를 리눅스의 서비스로 등록하는 방법과 그렇지 않고 mysqld_safe 스크립트를 이용해서 직접 기동하는 방법은 실제 MariaDB 서버가 작동하는 방식에 영향을 미치지는 않는다.

하지만, 운영 환경의 MariaDB에서는 서비스로 등록해서 자동으로 MariaDB가 종료되고 시작될 수 있도록 해주는 것이 일반적이다.

MariaDB start

 

3.1.1.1.1. 서비스로 등록된 경우

RPM으로 MariaDB 서버를 설치했다면 자동으로 /etc/init.d/ 디렉토리에 mysql이라는 이름의 MariaDB 서버 초기화 스크립트와 함께 설치된다. 또한 자동으로 각 초기화 레벨(리눅스 init 레벨)에 맞게 MariaDB 서버가 자동으로 종료되고 다시 기동될 수 있도록 서비스에 등록된다.

 

이렇게 서비스로 등록된 MariaDB를 시작하고 종료하는 방법은 상당히 간단하다.

## MariaDB 서버 시작

shell> service mysql start

 

## MariaDB 서버 종료

shell> service mysql stop

 

## MariaDB 서버의 프로세스 상태 체크

shell> service mysql status

MySQL running(19807)  [ OK ]

MariaDB를 RPM으로 설치하지 않고 직접 컴파일을 했거나 tar.gz로 압축된 버전으로 설치하면 /etc/init.d/ 디렉터리에 MariaDB의 초기화 스크립트가 자동으로 설치되지 않는다. 

## MariaDB가 /usr/local/mysql 디렉터리에 설치된 경우
## RPM 설치가 아닌 직접 컴파일이나 tar.gz 압축을 한 경우 아래 작업이 필요하다.
shell> cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql

## chkconfig을 실행해주면 RPM으로 설치했을 때와 동일하게 
## MariaDB를 "service mysql start" 명령으로 시작하고 종료할 수 있다.
shell> chkconfig mysql

 

3.1.1.1.2. 서비스로 등록되지 않은 경우

여러 버전의 MariaDB를 잠깐씩 테스트하는 용도로 사용하거나 개인적으로 PC에서 사용하는 경우, 서비스를 등록하지 않고 아래와 같이 스크립트를 만들어 MariaDB를 필요한 경우에만 수동 시작할 수 있다.

#! /bin/bash

MYSQL_HOME=/usr/local/mysql

#{MYSQL_HOME}/bin/mysqld_safe --defaults-file=/etc/my.cnf &

만약 MariaDB 서버의 엔젤 프로세스(mysqld_safe)도 필요치 않다면 아래처럼 스크립트를 만들어 수동 시작하면 된다.

#! /bin/bash

MYSQL_HOME=/usr/local/mysql

#{MYSQL_HOME}/bin/mysqld --defaults-file=/etc/my.cnf &

 

그리고 수동으로 직접 시작하고 종료하는 경우라도 support-files/mysql.server 스크립트로 컨트롤 할 수 있다.

## 시작

shell> sh ${MYSQL_HOME}/support-files/mysql.server start

 

## 종료

shell> sh ${MYSQL_HOME}/support-files/mysql.server stop 

자동으로 시작했든지, 수동으로 mariadb를 시작했든지~ 아래처럼 종료할 수도 있다.

shell> mysqladmin -uroot -p shutdown

 

뿐만 아니라, MariaDB 서버가 다른 서버에서 기동 중일 수도 있고, 또는 유닉스 소켓 파일로 접근이 안되는 경우가 있을 수 있다. (당연히 root 유저가 해당 컴퓨터IP에서 서버접속이 가능해야 실행할 수 있다.)

이럴 때는 IP와 PORT를 명시하여 아래처럼 종료도 가능하다. 

shell> mysqladmin -h 192.168.0.1 -P 3307 -u root -p shutdown

MariaDB의 InnoDB는 종료되었다가 재시작될 때 트랜잭션 로그를 이용해서 자동 복구가 되긴 하지만

"kill -9"로 MariaDB 서버를 종료하는 것은 가이드하지 않는다.

MariaDB를 종료할 때는 mysqladmin을 사용하거나 "service mysql stop" 명령을 이용해서 종료한다.

 

3.1.2. 윈도우에서 MariaDB 서버의 시작과 종료

 

MariaDB도 오라클이나 티베로처럼 윈도우의 "서비스" 패널을 이용해서 컨트롤할 수 있다.

 

3.1.2.1. 서비스로 등록된 경우

MariaDB의 윈도우 설치 파일(MSI)를 이용해서 설치하면 설치마법사가 실행되는 중에 윈도우의 서비스로 등록할 이름을 입력하는 단계가 있으며, 이 단계에서 입력한 이름으로 윈도우 서비스 관리자에 등록된다.

 

3.1.2.2. 서비스로 등록되지 않은 경우

 

윈도우 설치 파일(MSI)로 설치하지 않은 경우에는 MariaDB가 자동으로 윈도우 서비스로 등록되지 않는다.

이런 경우에는 리눅스처럼 별도의 MariaDB 시작 스크립트(bat 파일)을 만들어서 컨트롤 할 수 있다.

 

뿐만 아니라, 윈도우 버전의 MariaDB에서는 별도의 엔젤 프로세스(mysqld_safe)가 존재하지 않으므로 "--default-file" 옵션을 이용해서 mysqld 프로그램을 시작한다.

c:\mysql\MariaDB10.0.6\bin\mysqld --default-file=c:\mysql\MariaDB10.0.6\my.ini

cf) 윈도우에서는 my.cnf가 아닌 my.ini가 환경설정 파일이다.

 

MariaDB를 종료할 때에도 리눅스처럼 mysqladmin 프로그램을 시용하면 된다.

c:\myslq\MariaDB10.0.6\bin\mysqladmin -h127.0.0.1 -P3306 -u root -p shutdown

## -h 옵션은 host ip, -P 옵션은 mariadb port, -u 옵션은 접속유저, -p옵션은 패스워드

3.2. 서버 로그인

MariaDB 서버에 접속하려면 mysql 커맨드 라인 툴을 이용하거나 HeidiSQL GUI, MySQL Workbench를 사용하면 됩니다.

 

3.2.1. 서버 로그인 및 버전 확인

위의 mysqladmin 프로그램 사용시에 사용했던 -h나 -P와 같은 옵션들이 낯설게 느껴질 수 있는데 mysql 커맨드 라인 툴을 이용하여 접속시 일반적인 다음과 같이 실행하면 됩니다.

C:\myql> c:\mysql\MariaDB10.0.6\bin\mysql -h 127.0.0.1 -P 3306 -u root -p

## -h 옵션은 host ip, -P옵션은 mariadb port, -u 옵션은 접속유저, -p옵션은 패스워드

MariaDB와 접속된 연결 정보를 확인하려면 mysql 클라이언트 연결프로그램에서 "\s" 또는 "status"를 실행하면 된다.

MariaDB [none]> \s

MariaDB [none]> status

자주 사용되는 mysql 클라이언트 프로그램 옵션

옵션 설명
--host, -h 접속할 MariaDB 서버의 호스트명을 명시
--port, -P 접속할 MariaDB 서버의 포트 번호를 명시
--user, -u MariaDB 서버에 접속할 때 사용할 유저 이름
--password, -p MariaDB 서버에 접속할 때 사용할 비밀번호(-p 옵션의 값이 생략되면, 자동으로 mysql 프로그램이 실행된 후 입력할 수 있도록 프롬프트가 표시된다.)
--database, -D mysql 클라이언트가 MariaDB 서버에 접속함과 동시에 기본으로 사용할 데이터베이스명 명시
--auto-rehash mysql 클라이언트 프로그램 내에서 테이블이나 컬럼명을 입력할 때, "TAB"을 이용해서 자동 완성이 가능하도록 해 줌.
--batch mysql 클라이언트 프로그램을 대화형(Interacive) 모드가 아닌 배치 모드로 실행.
--execute, -e mysql 클라이언트 프로그램이 MariaDB 서버에 접속됨과 동시에 파라미터로 주어진 문장을 실행한다. 비대화형 모드로 사용된다.
--skip-column-names, -N mysql 클라이언트에서 실행된 쿼리의 결과에서 컬럼 이름을 출력하지 않음
--safe-updates, -U

mysql 클라이언트를 안전모드로 실행함. 안전모드는 SELECT나 UPDATE 그리고 DELETE SQL이 FULL TABLE SCAN을 탈 때 자동으로 쿼리 실행을 멈추는 모드. 즉, 테이블의 모든 레코드를 업데이트해 버리거나 삭제하는 상황을 막아줌

3.2.2.1. --execute 옵션으로 mysql 클라이언트 실행

--execute 옵션으로 실행할 쿼리를 인자로 설정하면 mysql 클라이언트가 MariaDB 서버에 접속되면서 인자로 주어진 쿼리를 실행해서 그 결과를 표준 출력(stdout)으로 내보내고 종료한다.

--execute 옵션은 mysql 클라이언트 프로그램을 대화형 모드가 아니라 리눅스의 크론(cron)이나 윈도우 스케줄러 작업과 같이 비대화형 모드로 실행할 때 유용하게 사용할 수 있다.

## mysql 접속시 DB 지정과 쿼리 실행

## --execute 옵션은 mysql 클라이언트 프로그램을 비대화형 모드로 crontab이나 윈도우 스케줄러에서 유용하게 사용가능

shell> mysql -h 127.0.0.1 -P 3306 -u root -p -D test --execute="SELECT * FROM tab_important"

 

+--------+-----------+

|   uid   |  uname |

+--------+-----------+

1       |  Matt    |

+--------+-----------+

3.2.2.2. --batch 모드와 함께 --execute 옵션으로 mysql 클라이언트 실행

기본적으로 mysql 클라이언트는 배치 모드가 아닌 상태로 실행되는데 텍스트 모드의 표 형태로 컬럼명과 값들이 출력된다. 여기서 --bacth 옵션으로 실행하면 라인이 없는 표 형태로 출력된다. 주로 쉘 스크립트를 이용해서 쿼리의 실행결과를 조작할 때 사용할 수 있다.

shell> mysql -h 127.0.0.1 -P 3306 -u root -p -D test --batch --execute="SELECT * FROM tab_important"

 

uid         uname

1            Matt

3.2.2.3. --batch 모드로 --skip-column-names와 함께 --execute 옵션으로 mysql 클라이언트 실행

쉘 스크립트에서 쿼리의 실행결과를 조작하고자 하는 경우에는 --batch 옵션과 함께 --skip-column-names 옵션을 사용하면 쉘 스크립트에서 컬럼명을 제거하고 값만을 표준 출력으로 표시한다. 이는 쉘 스크립트에서 유용하게 사용할 수 있다.

shell> mysql -h 127.0.0.1 -P 3306 -u root -p -D test --batch --execute="SELECT * FROM tab_important"

 

1            Matt