티스토리 뷰

데이터베이스

MYSQL 쿼리 정리 (MariaDB)

초보의 CHOMAN 2015.06.11 13:35

mysql, mariadb 혼용 거의 둘다 사용 가능함

DB 접속

mysql -u DB아이디 -p 패스워드입력

mysql -u DB아이디 -p 패스워드입력 -h 아이피

초기 DB 패스워드 지정

mysqladmin -u root password 비밀번호  

예전 방식이고 버전별로 초기 패스워드 정책은 약간식 다름

mysql 도구

myisam_ftdump  
MyISAM에서 사용하는 FULLTEXT 인덱스에 대한 정보 출력해주는 TOOL

mysqlaccess  
DB에 대한 계정에 접근권한을 체크해주는 TOOL

mysqldumpslow queries.log  
slow query log 를 정리해주는 tools

mysqlslap  
mysql 서버에 쿼리를 실행하여 부하를 유발할수 있는 Tool

mysqldump  
백업

mysqlcheck  
tables 점검

DB 목록 보기

show databases;

DB 생성

create database DB이름;

DB 삭제

drop database DB이름

간혹 show database 해보면 빈 DB가 그대로 있는데 이거 까지 지워줄려면 DB 데이터 디렉토리 삭제

경고 없이 바로 삭제되므로 주의해야 함

DB 선택

use DB이름;

테이블 목록 출력

show tables;

먼저 use DB이름; 을 한후 이용

show tables from 디비이름

테이블 내용 (레코드) 보기

select \* from 테이블이름;

select \* from 디비이름.테이블이름;

조건의 맞는 레코드만 조회  
select \* from 테이블이름here 필드="값";

개수만큼의 레코드만 조회  
select \* from 테이블이름imit 개수;

% = \* select \* from 테이블이름 where 필드 like '값%';

테이블 구조 보기

desc 테이블이름;

레코드 삭제

테이블에서 특정 레코드 삭제하기
delete from 테이블이름 where 필드="값";

테이블 검사

check table 테이블이름;

테이블 복구

analyze table 테이블명;
repair table 테이블명;

테이블 이름 바꾸기

alter table oldtable rename newtable;

테이블 복사하기

INSERT INTO oldtable SELECT * FROM newtable;

테이블2에 있는 조건을 검색해서 테이블1에 INSERT 하기

  • INSERT 할때 컬럼수 맞아야 함

INSERT INTO 테이블1 SELECT 테이블컬럼1, 테이블컬럼2 FROM 테이블2 WHERE {조건} ORDER BY 필드이름 ASC;

테이블 복사하기 (KEY 값 무시하기?)

INSERT ignore INTO oldtable SELECT * FROM newtable;

테이블 삭제하기

drop table 테이블명;

테이블에 레코드 추가

insert into 테이블이름 (필드이름1,필드이름2,필드이름3) values('값1','값2','값3');

순서만 맞으면 필드이름 생략 가능함

정렬

주로 select 구문 뒤에 사용됨

order by asc
order by desc

아이피 주소 정렬

order by INTE_ATON(ip) asc
order by INTE_ATON(ip) desc

DB root 패스워드 강제 변경 (OLD)

service mysqld or mariadb stop
mysqld_safe --skip-grant &  
mysql -u root mysql  

mysql> update user set password=password('new password') where user='root';  
mysql> flush privileges;  
mysql> quit

service mysqld or mariadb start

계정

  • 사용자 계정 및 권한 명령은 수정이 아닌 이상 delete 와 insert into 사용 권장 하지 않음

계정만 생성

create user '아이디'@'호스트아이피'  identified by '패스워드';

계정만 삭제

DROP USER 아이디@호스트;

flush privileges;

권한 테이블 리로드 grant 명령이 아닌 insert into 같은 명령으로 수정한 경우 필요함

계정 패스워드 변경

update user set password=password('비밀번호') where user='유저명';

사용자 생성 및 권한

GRANT USAGE ON DB이름.테이블이름 TO '아이디'@'호스트' IDENTIFIED BY '패스워드';

권한만 설정

grant 권한 on DB이름.테이블이름 to '아이디'@'호스트' with grant option;

with grant option : 권한 선택 가능

권한 종류

SELECT
INSERT
UPDATE
DELETE
CREATE
DROP
INDEX
ALTER
USAGE
all privileges

권한 삭제

REVOKE ALL ON 디비이름.테이블이름 TO 아이디@호스트;

특정 권한만 삭제할 수 있다.

REVOKE SELECT ON 디비이름.테이블이름 TO 아이디@호스트;

권한 확인

show grants for 아이디@호스트;

백업 및 복구

디비별로 백업  
mysqldump -u root -p 디비이름 > 파일명.sql

전체백업  
mysqldump -u root -p --all-databases > 파일명.sql

케릭터셋 옵션을 이용한 백업 (euckr, utf8)  
mysqldump -u root -p --default-character-set=euckr DB이름 > 파일명.sql

테이블만 덤프  
mysqldump -u root -p -B DB명 --tables 테이블명1 테이블명2 테이블명3 > 파일명.sql

디비별로 복구  
mysql -u root -p DB이름 < 파일명.sql

전체복구  
mysql -u root -p < 파일명.sql

게릭터셋 옵션을 이용한 복구 (euckr, utf8)  
mysqldump -u root -p --default-character-set=euckr DB명 < 파일명.sql

프로세스 및 시스템

디비 상태 조회  
show status;

디비 변수 조회  
show variables;

디비 프로세스 확인  
show processlist;

특정 조건으로 디비 프로세스 확인  
SELECT \* FROM INFORMATION\_SCHEMA.PROCESSLIST where 필드1 > 조건 and 필드1 is not null;

테이블 락 걸기

FLUSH TABLES WITH READ LOCK;

UNLOCK TABLES;

락을 건 세션이 종료되면 Lock 자동 해제됨

  • select 조회만 가능하며 update insert 같은 쓰기 쿼리는 대기열 상태이며 Lock 이 해제되면 일괄 처리됨

'데이터베이스' 카테고리의 다른 글

트랜잭션 (Transaction)  (0) 2018.08.21
storage engine  (0) 2018.08.21
데이터베이스 엔진  (0) 2018.08.21
MariaDB Replication  (0) 2018.08.20
MYSQL 쿼리 정리 (MariaDB)  (0) 2015.06.11
mysql replication 리플리케이션  (0) 2015.06.10
댓글
댓글쓰기 폼
공지사항
Total
726,085
Today
138
Yesterday
194
링크
«   2019/08   »
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함