MySQL 정리

 

MySQL 서버 접속, 끊기

MySQL에 접속하기
1: 호스트주소의 MySQL서버에 해당 ID, 비밀번호로 접속. 접속에 성공하면 mysql> 프롬프트가 뜬다.
C:\>mysql -h 호스트주소명 -u 사용자ID -p 데이터베이스명
Enter password: 비밀번호 입력

2: 자신의 컴퓨터안에 설치된 MySQL서버에 접속할 때. 호스트주소는 생략이 가능. 비밀번호는 Enter password: 프롬프트가 뜨고 난 다음에 입력한다.
C:\>mysql -u 사용자ID -p
Enter password: 비밀번호 입력

MySQL 접속 끊기: 접속된 상태에서 quit 또는 exit
mysql> quit
mysql> exit

ex)
C:\>mysql -h localhost -u man -p test_db
Enter password: 1111
//test_db 데이터베이스에 man이란 아이디, 비밀번호 1111로 접속하기.

mysql> quit //접속 끊기.
C:\>

MySQL 기본 관리 기능

새 사용사 생성

새 사용자 계정 생성을 하려면 관리자계정(root)으로 로그인해야 된다.

특정 데이터베이스 중 특정 테이블에 사용권한을 갖는 새 사용자 생성:
grant all privileges on 데이터베이스명.테이블명 to 유저명 identified by '비밀번호' with grant option;

ex)
grant all privileges on test_db.test_table to testman identified by '1111' with grant option; //test_db 데이터베이스의 test_table을 사용할 권한을 갖는 비밀번호 1111이고 유저명이 testman인 새 사용자를 생성. test_db.* 이라고 쓰면 test_db의 모든 테이블을 사용할 권한을 갖는다.
내용이 바로 반영되게 하기 위해서는 flush privileges; 명령을 내려준다.
이 새로 생긴 아이디로 접속할 경우
mysql -u testman -p 를 치고 엔터를 클릭한 뒤 비밀번호를 넣어주면 접속된다.

비밀번호 변경

자신의 비밀번호 변경:
set password = password('새 비밀번호');

관리자로 접속해 다른 사용자 비밀번호 변경:
use mysql;
update user set password = password('새 비밀번호') where user = '유저명';
flush privileges;

ex) set password = password('123456');
//비밀번호를 123456으로 변경하기

데이터베이스 생성,보기,사용,삭제하기

새로운 데이터베이스 생성:
create database 데이터베이스명;

데이터베이스들 보기:
show databases;

데이터베이스 사용하기:
use 데이터베이스명;

데이터베이스 삭제하기:
drop database 데이터베이스명;

ex) create database test_db; // test_db란 데이터베이스 새로 생성.
drop database test_db; // test_db 데이터베이스 제거

테이블 생성,보기,구조보기,삭제하기

새로운 테이블 생성:
create table 테이블 명(
    필드명1     타입,
    필드명2     타입,
    ...
    primary key(필드명)
);


테이블들 보기:
show tables;
show tables like 테이블명; //해당 테이블명의 테이블을 보여준다

특정 테이블 구조 보기: 필드와 타입들을 볼 수 있다.
desc 테이블명;

테이블 구조 변경하기: 테이블에 새로 칼럼을 추가하거나 삭제, 데이터 타입이나 위치 등을 변경할 수 있다.
옵션:
* add column: 새 칼럼 추가
* drop column: 칼럼과 내부 데이터 제거
* change column: 칼럼명, 데이터 타입 변경
* modify column: 칼럼의 데이터 타입, 위치 변경
alter table 테이블명 옵션명 칼럼명;

테이블 삭제하기:
drop table 테이블명;

ex)
CREATE TABLE test_table(
    num     int          not null auto_increment,
    id       char(10)    not null ,
    passwd  varchar(20) not null,
    content   text,
    primary key(num)
);

//4개의 필드를 갖는 test_table 테이블 생성. not null은 값이 반드시 입력되어야 한단 표시이고 auto_increment는 자동으로 번호가 1씩 증가하면 붙는단 표시.
primary key는 num 필드로 지정.

DESC test_table;
//test_table 구조 보기
ALTER TABLE test_table ADD COLUMN age int; //test_table에 int형의 age란 칼럼 추가
ALTER TABLE test_table CHANGE COLUMN age years varchar(3); //test_table의 age란 칼럼을 years란 이름으로 변경하고 데이터 타입을 varchar(3)로 변경
ALTER TABLE test_table MODIFY COLUMN days datetime AFTER years; //test_table의 days란 칼럼의 데이터 타입을 datetime으로 변경하고 years 칼럼의 다음 순서에 오도록 위치 변경
DROP TABLE test_table; //test_table 제거

테이블의 레코드 내용보기, 추가, 수정, 삭제하기.

테이블의 레코드 내용 확인하기:
select * from 테이블명; //테이블의 모든 레코드 보기
select 필드명1, 필드명2... from 테이블명 where 조건식;
//조건을 만족하는 테이블의 특정 레코드 보기
select * from 테이블명 order by binary(필드명);
//해당 이름의 필드에 따라 정렬된 테이블의 모든 레코드 보기. binary()함수는 문자열을 이진수 문자열로 바꿔주는 함수로 한글 정렬시 문제 발생을 줄이기 위해 필요.

테이블에 레코드 추가하기:
1. 테이블의 특정 필드에 값을 넣을 경우
insert into 테이블명(필드명1, 필드명2,...)
            values(필드값1, 필드값2....);

2. 모든 필드에 빠짐없이 값을 입력할 경우
insert into 테이블명 values(필드값1, 필드값2....);

테이블의 레코드 수정하기:
update 테이블명 set 필드명=필드값 where 조건식;
//조건을 만족하는 필드값 바꿔주기 (where 조건식을 빼면 테이블의 해당 필드명을 가진 모든 레코드를 지정한 필드값으로 수정한다.)

테이블의 레코드 삭제하기:
delete from 테이블명 where 조건식;
//조건을 만족하는 특정 레코드 삭제하기(where 조건식을 빼면 테이블의 모든 레코드를 삭제한다.)

ex)
insert into userinfo (num, id, pw) values (1, 'testman', '123' );

//userinfo 테이블의 num, id, pw 필드에 1, 'testman', '123'을 각각 입력한다.
insert into userinfo values (2, '2ndman', '6589' );
//모든 필드에 빠짐없이 넣을 경우 필드명을 생략할 수 있다.

select * from userinfo; //userinfo 테이블의 모든 레코드 보기.
select id, pw from userinfo; //userinfo 테이블의 id, pw 레코드 보기.
select * from userinfo order by binary(name);
//userinfo 테이블의 모든 레코드를 이름 순으로 정렬하여 보기.

update userinfo set id = 'testwoman' where num=1;
//userinfo 테이블 중 num 필드의 값이 1인 레코드의 id 값을 testwoman으로 변경하기.

delete from userinfo where id = 2ndman;
//userinfo 테이블 중 id값이 2ndman인 레코드 삭제하기.

배치파일로 명령 실행하기, 데이터베이스 백업하기.

미리 MySQL용 명령들을 텍스트 에디터등에서 작성한 뒤 확장자를 sql로 하여 저장시켜놓고 그 파일에 담긴 명령을 한꺼번에 실행시킬 수 있다.
C:\>mysql -h 호스트주소명 -u 사용자ID -p < 외부파일명.sql
Enter password: 비밀번호 입력


mysqldump 유틸리티를 이용해 데이터 베이스 백업받기:
C:\>mysqldump -h 호스트주소명 -u 사용자ID -p 데이터베이스명 > 백업파일명.sql
Enter password: 비밀번호 입력

ex)
C:\>mysql -h localhost -u testman -p < batch.sql
Enter password: 1111

//batch.sql에 담긴 내용을 실행하기.

C:\>mysqldump -h localhost -u testman -p test_db > backup_%date%.sql
Enter password: 1111

//mysqldump 유틸리티를 이용해 test_db 데이터 베이스를 backup_오늘날짜.sql 파일로 백업받기:

-2013.4.15
-2014.10.5 추가