본문 바로가기
㏈ª By β┖υΕJini/MY-SQL

MY-SQL 이것만은 알아 두자.

by ㏈ª ☞ β┖υΕJini.κR 2008. 12. 11.
사용자 삽입 이미지

요즘 열심히 보고 있는 책이 아니라 볼려고 하는 책이다. ㅎㅎ

MySQL root 패스워드 분실했을 경우


1>암호 초기화
# killall mysqld (데몬을 죽입니다)

# cd /usr/local/mysql (mysql이 설치된곳 )
# ./bin/safe_mysqld --skip-grant &

초기화 완료


2>새로운 암호로
# ./bin/mysql  (sql 실행)

mysql>use mysql

mysql>update user set password=password('새암호') where user='root';
예>update user set password=password('1234') where user='root';

mysql> FLUSH PRIVILEGES
mysql> exit

# ./bin/mysql  -uroot -p1234  접속 테스트



백업&복구(전체/부분/테이블)

./mysql -u root -p[비번] test > test_db.sql 백업
mysql> create database test;
./mysql -u root -p test < test_db.sql 복구(단, test라는 database 생성이 선행되어야함.)

풀 백업
#mysqldump -u root -p 테이블명 -h 호스트> backup_all.sql 백업
#mysql -u root -p 테이블명 -h 호스트< backup_all.sql  복구 



특정 테이블만 백업/복구
backup table table_name to '/path/bakcup';
restore table table_name from '/path/backup';
 
데이터베이스 구동/종료/확인
./mysqladmin version
./bin/safe_mysqld& 시작
./mysqladmin -u root shutdown 종료
./mysqlshow
./mysqlshow mysql
./mysql -e "select host,db,user from db" mysql

MySQL 특정 테이블 (dump) 받기

testdb 의 모든 테이블의 스키마만 덤프받으려 할 경우
$ mysqldump -u testuser -p -d testdb > testdb.sql

testdb 의 testtable1 테이블의 스키마 및 데이타를 모두 덤프 받으려 할 경우
$ mysqldump -u testuser -p testdb testtable1 > testdb_testtable1.sql

testdb 의 testtable1 테이블의 스키마 및 데이타중 일부를 덤프 받으려 할 경우
( no 가 testtable1 의 필드명일 경우 )
$ mysqldump -u testuser -p testdb testtable1 -w 'no > 1 and no < 100' > testdb_testtable1.sql

옵션설명 :

-u : 사용자명 입력
-p : 비밀번호 입력
-d : 데이타 덤프 안함
-w : WHERE 절 입력함 (단일 따옴표인것에 주의)

MySql 기본명령어 모음[콘솔사용시]

[기본적인 명령어]

데이터 베이스 테이블 구조보기
$mysqlshow -u user -ppassword

필드의 내용보기
$mysqlshow DB -u user -ppassword

DB내 테이블 생성하기

mysql>create table 테이블명 (필드명 데이터형, 필드명 데이터형...);

(참고) 데이터형
INT(n) : n개의 길이를 가지는 정수형
DEC(x,y) : x개의 정수자리와 y개의 소수자리를 가지는 데이터형
varchar(n) : n=1~255 사이의 문자형
char(n) : 7개의 8비트 문자형
DATE : yyyy-mm-dd 형식의 날짜
TIME : hh-mm-ss 형식의 시간
등등..

테이블의 목록 보기

mysql>desc 테이블명;

필드에 내용추가하기

1) txt 형식의 화일로 각 필드의 내용을 적는다.
단, 각 내용을 구분하는 것은 탭키를 사용한다.
2) null 값일 경우는 \n 이라고 쳐준다.
3) mysql>load data local infile "*.txt" into table 테이블명;

필드의 데이터 업데이트-전체수정

mysql>delete from 테이블명;
mysql>load data local file "*.txt" into table 테이블명;

필드의 데이터 업데이트-부분수정

mysql>update 테이블명 set 필드 = "바꿀값" where 필드="검색값";

[좀더 복잡한 명령어]

화일을 통째로 테이블에 집어넣기
mysql> load data infile 화일절대경로/화일명 into table 테이블명
-> fields terminated by 구분자;

테이블에서 필드 만들기
mysql> alter table 테이블명 add 필드명 필드자료형;
ex) alter table mytable add name varchar(20);

테이블에서 필드 삭제하기
mysql> alter table 테이블명 drop column 필드명;
ex) alter table mytable drop name;

테이블 이름 바꾸기
mysql> alter table 테이블명 rename 새테이블명;

테이블에서 데어터를 검색해서 외부 화일로 빼돌리기
mysql> select * from 테이블명 where 검색할필드명 = 검색조건
-> into outfile 저장할 화일명
-> field terminated by 구분자;