19
2017-Jul
[MySQL] 설치 및 기초명령어
작성자: Blonix
IP ADRESS: *.64.228.3 조회 수: 1006
참고 :
http://luckyyowu.tistory.com/184
http://link2me.tistory.com/431 >> 사용자DB 권한설정 관련
당연히 관리자 권한으로 진행
apt-get update
apt-get upgrade
apt-get install mysql-server
순서대로 진행
service mysql start
mysql -u root -p
참고 : mysql -h 호스트명 -u 아이디 -p
-p 옵션은 비밀번호 물어보는거
설치시 입력했던 패스워드 ㄱ
show databases;
현재 사용가능한 DB 목록이 뜬다.
use mysql;
mysql DB는 mysql 관리용 DB다. 사용할 DB를 선택하는작업.
1) create user '니하고싶은ID';
2) create user '니하고싶은ID' identified by '니하고싶은password';
3) create user '니하고싶은ID'@'%' identified by '니하고싶은password';
첫번째는 비밀번호 없는 유저가 생긴다.
두번째는 비밀번호까지 동시에 생기고,
세번째는 비밀번호와 호스트까지 부여한다. ('%'는 외부접근 호스트를 의미)
좀 더 힘들게 만들려면 아래 방법을 쓸 수도 있다.
4) insert into user (host, user, password) values ('localhost', '아이디', password('비번'));
5) insert into user (host, user, password) values ('%', '아이디', password('비번'));
위에서 insert, update, delete 구문을 이용한 경우에는 아래 구문을 실행해야만 한다. (4, 5번)
flush privileges;
혹시 사용자를 삭제할 필요가 있다면 아래 구문을 이용한다.
1) drop user '니아이디';
2) delete from user where user = '니아이디';
2번을 쓴 경우 flush privileges;
호스트 지정이 필요하다면 drop user '니아이디'@'%'; 또는 drop user '니아이디'@'localhost'; 도 가능하다.
혹시 특정 요소를 변경할 필요가 있다면 아래 update 구문을 이용한다.
UPDATE 테이블명
SET 수정되어야 할 컬럼명 = 수정되기를 원하는 새로운 값
WHERE 변경 데이터 조건 컬럼 = 선택 조건 값;
show tables;
DB의 전체 테이블을 출력한다.
desc user;
user 테이블의 구조를 출력한다.
select host, user, password from user;
user 테이블이 가진 모든 요소를 host, user, password 항목에 대해 출력한다.
이때 비밀번호는 암호화된 것을 볼 수 있다. 위에 사용자 만들때 4,5번에서 password('비번') 한게 암호화 함수다.
create database testdb;
testdb라는 이름의 데이터베이스를 생성한다.
삭제는 drop database 어쩌구저쩌구 다.
grant all privileges on testdb.* to 니아이디@니호스트;
를 통해 testdb의 모든 테이블 모든 요소에 접근권한을 줄 수 있다. all 대신 딴거하면 요소제한됨.
뒤에 identified by '비번' 붙이면 비밀번호 변경도 가능
flush privileges;
show grants for 니아이디@니호스트;
통해서 권한 준 걸 확인할 수 있다.
참고로 권한 제거는 grant 대신 revoke, to 대신 from 이다.
\q
나간다.
mysql -u 새로운유저id -p
비밀번호 입력하고 들어간다.
show databases;
해보면 아까 만든 데이터베이스가 뜬다.
use testdb;
show tables;
해보면 비어있을거다.
create table guestbook(
id int unsigned not null auto_increment primary key,
name varchar(20),
home varchar(40),
comment text,
reg_date datetime
);
테이블을 작성한다. 이름은 guestbook이다.
id 는 unsigned int이고 null이 아니며, 자동으로 증가하고 각 컬럼(데이터)를 구분하는 고유값(primary key)이다.
사실 primary key 붙으면 not null은 자동으로 따라와서 안붙여도 된다.
varchar는 가변길이 사용으로 남는 공간을 반환해 용량확보에 유리하나 속도가 느리다.
datetime 은 시간 날짜 변수형이다.
디폴트값은 default 0 과 같이 설정할 수 있다.
auto_increment 값이 있을 경우 디폴트값을 설정 못한다. (최근버전)
DB엔진이나 문자인코딩 등도 테이블을 만들 때 지정할 수 있는데, 마지막에 괄호 닫을 때 아래처럼 하면 된다.
)Engine-='InnoDB' default charset='utf8';
참고 : http://blog.naver.com/poohnuna/50082208273
insert : 테이블에 하나의 행을 삽입(DML)
형식)
insert into 테이블이름(컬럼 이름) values(데이터,데이터);
예)
insert into person(name, age, gender, grade) values('YoWu', '24', '남', '3');
insert into person(name, age, gender, grade) values('hsg', '25', '남', '4');
특정 컬럼에만 값을 넣을 경우 컬럼 이름을 넣어주면 된다. 컬럼명 미기재시 모든 컬럼에 순차적으로 데이터가 입력된다.
select : 테이블 데이터 조회(DML)
예)
select * from person; : person 테이블의 모든 데이터 조회
select * from person where age=24; : person의 데이터중 age의 값이 24인 데이터만 조회
select name from person where gender='남'; : person의 데이터 중 gender의 값이 '남'인 데이터의 name 값 조회
select name, age from person where gender='남' and age>20;: person의 데이터 중 gender의 값이 '남'이면서 age가 20이상 데이터의 name, age 값 조회
UPDATE [테이블] SET [열] = '변경할값' WHERE [조건]
자주 쓰이는 자료형
- char : 문자열
- varchar : 가변 문자열
- text : 텍스트
- int : 정수
- double : 실수
- date : 날짜
- datetime : 날짜 + 시간
char와 varchar의 차이