윈도우
mysql 종료
mysqladmin -uroot -p shutdown
(또는 killall mysqld)
mysql 윈도우 재시작
net start mysql
리눅스
mysqladmin -uroot -p shutdown
(or # kill mysqld)
재시작
mysqld_safe &
설치 후 작업
사용자 비밀번호 변경
# mysqladmin -u root password [new root password]
새로운 데이터 베이스 생성
# mysqladmin -u root -p[passwd] create [database]
sql 파일을 데이터베이스에 넣기
# mysql -u root -p[passwd] [database] < file.sql
사용자에게 대상 데이터베이스에 대한 모든 권한 주기
# mysql -u root -p[passwd] [database]
> grant all on [database].* to [user]@localhost identified by'[user passwd]';
> flush privileges;
대상 데이터베이스의 모든 테이블 내용 보기
> use [database];
> show tables;
> select * from [table];
모든 사용자 목록 보기
> use mysql;
> select * from user;
데이터베이스 재시작
# /usr/local/mysql/bin/mysql restart
DB 설정 다시 적용
# mysql reload
패스워드 복원
DB 정지
# mysql stop
DB 시작 (패스워드 없이)
# mysqld_safe --skip-grant-tables &
root 로그인
# mysql -u root
> use mysql;
> update user set password=PASSWORD("[new root password]") where User='root';
> flush privileges;
> quit
DB reboot
# mysql restart
root login
# mysql -u root -p
백업 & 복구
모든 DB 백업
# mysqldump -u root -p[passwd] --all-databases > dbbackup.sql
특정 DB 백업
# mysqldump -u root -p[passwd] --databases [database1] [database2] > dbbackup.sql
복구
# mysql -u root -p[passwd] < dbbackup.sql
cron 용 backup 스크립트
백업 계정 생성
# mysql -u root -p
> GRANT SEECT, SHOW DATABASES, LOCK TABLES ON *.* TO [user]@localhost IDENTIFIED BY '[passwd]';
쉘 생성
# vi backup.sh
date=`date -I`
mysqldump --all-databases -u [user] --password="[passwd]" > backup-$date.sql
운영용 필수 명령어
응용예)
> show variables like '%log_bin%';
> select count(*) from Article; - data count
> explain 테이블명; 테이블 구조 보기
> explain select u.uid, u.name, a.name from sm_user u, sm_addr a where u.uid=a.uid; 지정한 질의문이 어떻게 실행될 건지를 보여줌
> select version(); MySQL서버버전 출력
> status;
> select * from 테이블명 Limit 10; 오라클의 rownum 과 같은 기능
> select * from 테이블명 Limit 5, 10; 5번째부터 10번째까지
> insert into test values('12', now()); 오라클 sysdate와 동일
> show variables; 서버의 variables(설정사항)출력
> show variables like 'have_inno%' 조건에 맞는 variables만 출력
> show databases; database목록
> show tables; 현재DB의 테이블목록(temporary table은 출력하지 않음)
> show tables from db명; 지정된 db명이 소유한 테이블목록
> show tables like 'mem%'; 조건에 맞는 테이블목록만 출력
> show index from 테이블명; 인덱스 보기
> show columns from 테이블명; 테이블구조(describe 테이블명, explain 테이블명)
> show table status; 현재 DB의 테이블들의 상태(row수,table type,row길이,..)
> show table status from db명; 지정된 DB의 테이블들의 상태(row수,table type,row길이,..)
> show create table 테이블명; 해당 테이블 생성 SQL문 출력
> rename table 테이블1 to 테이블2; 테이블명 변경(ALTER TABLE 테이블1 RENAME TO 테이블2)
> rename table 테이블1 to 테이블2, 테이블3 to 테이블4; rename multiple tables
> rename table db1명.테이블명 to db2명.테이블명; 테이블을 다른 DB로 이동
> alter table 테이블명 add 컬럼명 데이터타입; 컬럼추가
> alter table 테이블명 del 컬럼명; 컬럼제거
> alter table 테이블명 modify 컬럼명 컬럼타입; 컬럼명에 지정된 컬럼타입의 변경
> alter table 테이블명 change old컬럼명 new컬럼명 컬럼타입 컬럼명 변경
> alter table 테이블명 type=innodb; 테이블type변경
> create table 테이블명(..) type=heap min_rows=10000; 10000row를 수용할 수 있을 만큼 메모리할당(heap type)
> create table 테이블2 as select * from 테이블1; 테이블1과 동일한 테이블 생성(with 데이터, as는 생략가능)
> create table 테이블2 as select * from 테이블1 where 1=2; 테이블1과 동일한 구조의 테이블 생성(without 데이터, 1=2는 0으로 할수도 있다.)
> insert into 테이블2 select * from 테이블1; 테이블1의 데이터를 테이블2에 insert
> delete from 테이블명 where 컬럼명='컬럼'
> update user set Grant_priv='Y' where user='newsfeed';
> delete from user where Host="test%.srch%";
::Bin log의 내용 보기
$] sudo mysqlbinlog ./binlog 명 | more
:: Slave 갯수 만큼 skip해서 repl 받기
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1
::Select 값을 한번에 정리해서 출력하기
SELECT COUNT
FROM servers
UNION ALL
SELECT COUNT
FROM slow_log;
[출처] mysql 기본 명령어 모음|작성자 sobe
'연구개발 > MYSQL' 카테고리의 다른 글
[Mysql] Centos5.6 에 Mysql 소스 설치 (0) | 2014.04.21 |
---|---|
mysql event (0) | 2014.04.13 |
mysql innodb tables recovery - innodb forcing recovery (0) | 2014.04.13 |
[MySQL]PreparedStatement 에 대해서 (0) | 2014.04.11 |
MySQL의 max_connections과 thread_cache에 대해 (0) | 2013.01.18 |