반응형

윈도우

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


반응형

+ Recent posts