mysql에 접속하여 방향키를 위로 올리면 그전에 입력했던 명령어를 확인할수 있습니다. 그러나 이렇게 하나하나씩 말고 로그형식으로 저장돼있는 파일을 확인하는 방법을 알아보겠습니다.

쿼리 로그를 파일로 남기는 방법

1.

 

먼저 mysql에 접속을 합니다.


mysql -u root -p 
"패스워드"

 

현재 로그 활성화 상태를 확인 하겠습니다.


show variables where Variable_name in ('version', 'log', 'general_log');
off로 돼 있습니다.

on으로 바꿔주고 다시 확인해보겠습니다. 

set global general_log = 1;
show variables where Variable_name in ('version', 'log', 'general_log');
on으로 바꼈습니다.

 

로그 파일을 확인해보겠습니다.

로그 파일의 위치는 코리아 IDC 기준 /free/mysql_data 입니다.(mysql db 디렉토리)

localhost.log 란 이름으로 저장이 됩니다.

 

이제 새로운 세션으로 접속하고 테스트 쿼리를 날려 확인해보겠습니다.

위에 있는 세션으로 show processlist; 란 쿼리를 입력하였고 
아래 세션이 새로 접속하여 /free/mysql_data디렉토리에 위치해 있는 localhost.log 란 파일을 확인중입니다.
확인 결과 날짜와 시간과 함께 입력한 쿼리문이 보입니다.

이방법은 mysql server를 재시작하지 않아도 바로 적용이 됩니다. 하지만 mysql server를 재시작 한다면 옵션이 풀리기때문에 이 방법을 사용하려한다면 set global general_log = 1; 옵션으로 다시 로그를 활성화 시켜야 합니다.

 

 

2.

첫번째 방법과 동일하게 로그를 활성화 시키는 방법입니다. 첫번째 방법과 다른점은 
my.cnf를 수정하는 방법으로 첫번째 방법과 반대로 mysqlserver를 재시작 해줘야 적용이 되고 재시작을 해줘도 계속 적용 됩니다.

 

my.cnf를 vi로 열어줍니다.

vi /etc/my.cnf

 

mysqld를 찾아 밑에 log = /free/mysql_data(mysqldb디렉토리)/logname.log 를 입력합니다.

 

저장하고 나온뒤 mysql.server를 재시작합니다.

재시작한뒤 로그를 확인해봅니다.

위에 두 방법은 정상적인 쿼리만 쌓이기 때문에 test; sdlfsdkl; 등의 인식되지 않는 명령어는 로그에 남지 않습니다.
또한 일반 웹사이트에서의 모든 쿼리또한 전부저장됩니다. 위에 보시는 것처럼 11시08분 30초에만 약 15~20개의 쿼리가 입력됩니다.
그렇기 때문에 이 방법을 쓴다면 해당 로그파일의 용량이 금방 늘어납니다.
(첫번째 방법을 실행한 서버는 mysql만 설치되어있는 테스트서버이고 두번째 방법을 실행한 서버는 실제 구동중인 서버입니다. 그래서 첫번째 결과에 쿼리가 많이 안찍혀있습니다.)

 

마지막 세번째 방법 입니다.

이 방법은 일반 리눅스 시스템에서 명령어를 남기는 history와 같습니다. 위치는 홈디렉토리이고 파일명은 .mysql_history입니다.

cd ~
ls -al


일반 history인 .bash_history가 보이고 mysql history 파일인 .mysql_history 파일이 보입니다.
파일명 앞에 . 이 붙게 된다면 그 파일은 숨김파일이 됩니다. ls -al 을 하여 확인 가능 합니다.

 

.mysql_history 파일을 확인해보겠습니다.

위에 보시면 아시겠지만 맨처음 지정한 루트 패스워드가 나옵니다. 패스워드가 여과없이 전부 출력 됩니다.그렇기 때문에 보안상 매우 취약합니다.
그렇다면 mysql_histroy를 남지 않게끔 하는 방법을 알아보겠습니다.


1.
우선 생성되어있는 .mysql_history 파일을 삭제합니다.
그다음 mysql_history 파일을 /dev/bull으로 심볼릭 링크를 겁니다.

ln -s /dev/null /홈디렉토리(root계정은 root 또는 ~ )/.mysql_history

 

이방법은 루트 계정만 돌아가는 서버면 상관 없겠지만 일반 계정이 많은 서버에서는 추천하지 않습니다.
이유는 일반계정마다 하나하나씩 해줘야하고 해준다 해도 나중에 일반계정을 추가하면 또 심볼릭 링크를 따로 걸어줘야합니다.


2.
MYSQL_HISTFILE 변수를 /dev/null로 설정


vi /etc/profile
export MYSQL_HISTFILE=/dev/null 추가 한뒤 저장

 


source /etc/profile

 

이상입니다.

보안과 편리함은 반비례하기 때문에 잘 판단하여 사용하기 바랍니다.

'job > mysql' 카테고리의 다른 글

mysql old패스워드 password 함수 동시 사용  (0) 2018.09.03
mysql update replace  (0) 2018.09.03
mysql 컴파일시 옵션 설명  (0) 2018.09.03
mysql select 문  (0) 2018.09.03
mysql 케릭터셋  (0) 2018.09.03

mysql 5.6 버전 기준입니다.
cmake로 컴파일 하는 버전, 즉 5.5.9 버전부터 최근에 나온 버전(5.7.2) 까지는 거의 동일합니다.

따라서 사용중인 mysql 버전이 5.5버전 이상인 경우는 버전에 크게 신경 안써도 됩니다.

설치시 어떤 옵션을 주어야 할지 몰라서 오신분들은 마지막 부분에 추천 옵션만 보시면 됩니다.


옵션중 "bool"로 표기돼 있는 것은 0(OFF) 또는 1(ON)로 주면 됩니다.
ex)-DENABLED_LOCAL_INFILE=bool 이란 옵션이 있다면
   -DENABLED_LOCAL_INFILE=1(활성화)
   -DENABLED_LOCAL_INFILE=0(비활성화) 입니다. 
   -DENABLED_LOCAL_INFILE 옵션의 기본값은 off 입니다. 따라서 이 옵션을 사용하지 않는다면 안써주면 됩니다. 
    그러나 이 옵션을 활성화 해야 한다면 -DENABLED_LOCAL_INFILE=1 으로 하면 됩니다.

---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
Installation Layout Options

 

-DINSTALL_LAYOUT=name   기본값=standalone
사전 정의 된 설치의 레이아웃을 선택.

standalone = 동일한 레이아웃입니다. tar.gz 형식을 위해 사용. ZIP 패키지
rpm:RPM 패키지와 비슷한 레이아웃.
svr4:Solaris 패키지 레이아웃.
deb:DEB 패키지 레이아웃. 실험(미완성버전?이나 테스트용을 뜻하는듯)

ex)solaris 패키지 레이아웃으로 설치를 원한다면   -DINSTALL_LAYOUT=svr4
솔라리스 레이아웃을 선택하지만 추가로 다른 옵션을 지정하여 개별 구성 요소의 설치 위치를 변경 할수 있다.
예를들면 
shell> cmake . -DINSTALL_LAYOUT=SVR4 -DMYSQL_DATADIR=/var/mysql/data
(레이아웃은 솔라리스패키지용으로 설치하되, mysql datadir는 /var/mysql/data로 지정)


-DCMAKE_INSTALL_PREFIX=dir_name   기본값=/usr/local/mysql
mysql 디렉토리 설치 경로 지정

-DINSTALL_BINDIR=dir_name        기본값=PREFIX/bin
bin 파일

-DINSTALL_DOCDIR=dir_name  기본값=PREFIX/docs
documentaion 파일

-DINSTALL_DOCREADMEDIR=dir_name  기본값=PREFIX
readme 파일

-DINSTALL_INCLUDEDIR=dir_name  기본값=PREFIX/include
header 파일 
 
-DINSTALL_INFODIR=dir_name  기본값=PREFIX/docs 
info 파일

-DINSTALL_LIBDIR=dir_name  기본값=PREFIX/lib
library 파일

-DINSTALL_MANDIR=dir_name  기본값=PREFIX/man
manual page

-DINSTALL_MYSQLSHAREDIR=dir_name 기본값=PREFIX/share
shared data 파일

-DINSTALL_MYSQLTESTDIR=dir_name  기본값=PREFIX/mysql-test
 mysql-test 디렉토리

-DINSTALL_PLUGINDIR=dir_name  기본값=PREFIX/lib/plugin
plugin 디렉토리

-DINSTALL_SBINDIR=dir_name  기본값=PREFIX/bin
mysqld server 파일

-DINSTALL_스크립트DIR=dir_name  기본값=PREFIX/스크립트s
mysql_install_db 디렉토리

-DINSTALL_SHAREDIR=dir_name  기본값=PREFIX/share
aclocal/mysql.m4 파일

-DINSTALL_SQLBENCHDIR=dir_name  기본값=PREFIX
sql-bench 디렉토리

-DINSTALL_SUPPORTFILESDIR=dir_name 기본값=PREFIX/support-files
extra support files 파일

-DMYSQL_DATADIR=dir_name
mysql data디렉토리

-DODBC_INCLUDES=dir_name
ODBC includes 디렉토리

-DODBC_LIB_DIR=dir_name
ODBC library 디렉토리

-DSYSCONFDIR=dir_name
기본 my.cnf의 옵션 파일 디렉토리

--------------------------------------------------------------------
CMAKE_INSTALL_PREFIX 와 MYSQL_DATADIR 옵션을 제외한 나머지 옵션들은 따로 설정할 필요가 없다.
이유는 보시다시피 전부 기본값이 CMAKE_INSTALL_PREFIX 옵션으로 지정해준 경로의 하위 디렉토리이기 때문이다.
MYSQL_DATADIR 는 편한대로 지정해주면 된다.

Installation Layout Options 중에서 알아둬야할 옵션은 -DCMAKE_INSTALL_PREFIX 와 MYSQL_DATADIR 이다.
나머지는 기본값으로 해도 무방하다.

---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
Storage Engine Options

서버에 정적스토리지 엔진 설정

-DWITH_engine_STORAGE_ENGINE=1

ex)
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1

반대로 제외할려면
-DWITHOUT_engine_STORAGE_ENGINE=1

myisam 엔진은 따로 설정할 필요가 없다.

---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
Feature Options

-DCOMPILATION_COMMENT=string
컴파일 환경에 대한 설명 코멘트

-DDEFAULT_CHARSET=charset_name  기본값:latin1
서버의 기본 케릭터셋 설정

-DDEFAULT_COLLATION=collation_name 기본값:latin1_swedish_ci
서버의 기본 콜레이션 설정

-DENABLE_DEBUG_SYNC=bool
서버에 디버깅 동기화 기능을 컴파일하는것으로 , 테스트 및 디버깅을 위해 사용됨.
이 옵션은 기본적으로 활성화 되어 있지만 mysql 설정에서 디버깅이 구성되어 있지 않으면 효과가 없다.
디버깅을 활성화하고 디버깅 동기화를 비활성화하는 경우는 -DENABLE_DEBUG_SYNC=0 옵션을 사용

-DENABLE_DOWNLOADS=bool   기본값:off
어떤 파일을 다운로드할지 여부

-DENABLE_DTRACE=bool
DTrace 프로브의 지원을 포함할지 여부

-DENABLE_GCOV=bool
gcov의 지원을 포함할지 여부 (리눅스에서 가능)

-DENABLE_GPROF=bool    기본값:off
gprof 사용 여부(최적화된 리눅스에서 가능)

-DENABLED_LOCAL_INFILE=bool  기본값:off
LOAD DATA INFILE에 대한 클라이언트 라이브러리에서 LOCAL 기능을 사용할지 여부

-DENABLED_PROFILING=bool  기본값:on
쿼리 프로파일 링 코드를 사용할지 여부   

-DIGNORE_AIO_CHECK=bool   기본값:off
DBUILD_CONFIG=mysql_release옵션을 줬을때 libaio 라이브러리 검사를 무시

-DMYSQL_MAINTAINER_MODE=bool  기본값:off
MySQL의 메인테이너 특정 개발 환경을 사용할지 여부

-DMYSQL_PROJECT_NAME=name  기본값:3306
Windows or Mac OS X 에서만 사용가능

-DMYSQL_TCP_PORT=port_number  기본값:3306
tcp/ip 포트 넘버 설정

-DMYSQL_UNIX_ADDR=file_name  기본값:/tmp/mysql.sock
서버가 소켓 연결을 수신하는 Unix 소켓 파일의 경로.
절대경로로 써주어야 합니다.

-DOPTIMIZER_TRACE=bool
최적화 프로그램 추적을 지원하는지 여부

-DWITH_DEBUG=bool   기본값:Off
디버깅 지원을 포함할지 여부

-DWITH_DEFAULT_COMPILER_OPTIONS=bool 기본값:ON
기본 컴파일러 옵션을 사용할지 여부
-DWITH_DEFAULT_FEATURE_SET=bool  기본값:ON
기본 freature 옵션을 사용할지 여부
위에 두 옵션의 기본 옵션의 위치는 cmake/build_configurations/'compiler' or feature_set.cmake 파일

-DWITH_EXTRA_CHARSETS=name  기본값:all
추가로 지원할 케릭터셋 설정

-DWITH_INNODB_MEMCACHED=bool  기본값:OFF
memcached의 공유 라이브러리를 생성할지 여부(libmemcached.so and innodb_engine.so)

-DWITH_LIBEVENT=string   기본값:bundled
두 libevent 라이브러리 사용

-DWITH_LIBEDIT=bool   기본값:on
bundled libedit 라이브러리를 사용

-DWITH_LIBWRAP=bool   기본값:off
libwrap의 (TCP wrappers) 지원을 포함할지 여부

-DWITH_READLINE=bool   기본값:off
bundled readline 라이브러리를 사용
readline은 오래된 번들로서 5.6.5 버전부터 삭제된 옵션

-DWITH_SSL={ssl_type|path_name}  기본값:no
ssl 지원 여부

-DWITH_UNIXODBC=1   기본값:off
unixodbc사용가능 여부

-DWITH_ZLIB=zlib_type   기본값:system
zlib지원 여부

-DWITHOUT_SERVER=bool   기본값:off
mysqlserver없이 구축할지 여부

---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------------------

추천 옵션
 

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
-DSYSCONFDIR=/free/mysql_data
-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock
-DDEFAULT_CHARSET=utf8
-DDEFAULT_COLLATION=utf8_general_ci
-DWITH_EXTRA_CHARSETS=complex
-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
-DWITH_READLINE=1
-DMYSQL_TCP_PORT=3306
-DENABLED_LOCAL_INFILE=1

-DMYSQL_USER=mysql

설명
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql
mysql 디렉토리 지정.

-DSYSCONFDIR=/free/mysql_data
db디렉토리 지정

-DMYSQL_UNIX_ADDR=/usr/local/mysql/tmp/mysql.sock
mysql.sock 위치 지정.

-DDEFAULT_CHARSET=utf8
디폴트 케릭터셋 지정

-DDEFAULT_COLLATION=utf8_general_ci
디폴트 콜레이션 지정

-DWITH_EXTRA_CHARSETS=complex
추가 지원할 케릭터셋 all,complex,none 이 있다. all 로 줘도 무방하지만 complex로 줘도 충분합니다.

-DWITH_INNOBASE_STORAGE_ENGINE=1
-DWITH_ARCHIVE_STORAGE_ENGINE=1
-DWITH_BLACKHOLE_STORAGE_ENGINE=1
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1
스토리지 엔진 장착 
(mysql5.6부터는 기본 엔진이 innodb이고, 각 엔진마다 장단점이 있다.설치후 변경 가능)

-DWITH_READLINE=1
readline 사용 가능
이 옵션을 사용하면 원격접속후 mysql에서 한글 타이핑시 한글이 보입니다. 사용하지 않으면 한글이 보이지 않고 그냥 빈 공백으로 보입니다.  그러나 테스트 결과 옵션 적용해도 글자가 안 보입니다. 어차피 이제 곧 없어질 옵션이니 써도 그만 안써도 그만, 크게 신경 쓸 필요없는 옵션입니다.
이 옵션은 5.6.6 부터는 사용되지 않습니다. 이유는 너무 오래된 번들이기 때문.

-DMYSQL_TCP_PORT=3306
mysql 기본 포트 3306

-DENABLED_LOCAL_INFILE=1
local_infile 변수 사용 가능하게끔.
텍스트 파일의 데이터를 특정 테이블에 저장하는 변수.

-DMYSQL_USER=mysql

이 옵션은 공식홈페이지에는 나와있지 않은 옵션입니다. 그러나 mysql 설치하시는 분들중 종종 이 옵션을 넣더군요. 테스트결과 서버에 아무 지장 없으니 넣어도 그만 안넣어도 그만입니다.

mysql사용자를 "mysql"이란 사용자로 하는거겠지요 ?

 

이상 mysql 설치시 옵션에 대해 알아보았습니다.

5.6버전 기준이며 mysql 공식 홈페이지 http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html 참조 하였습니다.

몇몇 옵션들은 기본값이 off로 돼 있어도 설치해보면 on으로 돼있는 경우도 있습니다.
ex)-DENABLED_LOCAL_INFILE=1   //디폴트값은 0ff로서 이옵션을 주지 않으면 off로 돼있어야 하지만 on으로 돼있음

그렇기 때문에 옵션값과 디폴트값이 같더라도 중요한 옵션은 다시한번 적어주었습니다.
ex)-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

서버 환경이나 용도에 따라 변경 하셔야 합니다.

'job > mysql' 카테고리의 다른 글

mysql update replace  (0) 2018.09.03
mysql history 로그 설정  (0) 2018.09.03
mysql select 문  (0) 2018.09.03
mysql 케릭터셋  (0) 2018.09.03
mysql 로그 설정  (0) 2018.09.03

select * from db;

 

디비 나열

--------------------------

 

select User, Db from db;

 

db안에 user랑 db열만 나열

-------------------------

 

select * from db where User = 'root';

 

db안에 user이름이 root만

-------------------------------

 

select User from db;

where User like '%ot'

 

db에 ot로 끝나는(root,bot,soot등)것들 User열만 나열

---------------------------------

'job > mysql' 카테고리의 다른 글

mysql history 로그 설정  (0) 2018.09.03
mysql 컴파일시 옵션 설명  (0) 2018.09.03
mysql 케릭터셋  (0) 2018.09.03
mysql 로그 설정  (0) 2018.09.03
mysql 계정생성등  (0) 2018.09.03

+ Recent posts