정보보안공부

웹보안_10. MYSQL/쿼리 본문

정보보안/웹보안

웹보안_10. MYSQL/쿼리

Steady_sp 2018. 2. 24. 02:55

MySQL

MySQL을 설치해보자

 

 

설치한후 확인해보자

 

 

Mysql이 설치가 됬다면 mysql 서비스를 실행하자.

 

 

Mysql에 접속하려면 mysql -h [IP] -u root 형식으로 접속하지만 이방식은 원격지에서 접속할때 사용하므로 한컴퓨터에서 Mysql을 사용하고있다면 mysql -u root로 접속해보자.

 

 

처음설치한뒤 비밀번호를 설정하지않아서 바로 접속이되었다. 접속이됬으면 입력하는 라인이 mysql> 로 변하게된다.

접속한 계정이 root 관리자 계정이므로 비밀번호를 설정해보자. 이 root계정은 리눅스의 root계정이라는 다르다. Mysql의 root계정이라는 것에 주의하자.

 

mysql 입력창을 나가려면 quit을 입력하면된다.

 

 

비밀번호는 mysqladmin -u root password 원하는 비밀번호를 입력하면된다.

 

이제 만든 비밀번호로 root계정에 접속해보자.

 

 

비밀번호를 사용하려면 -p 속성을 사용하면된다.

 

이제 Mysql에 있는 데이터들을 확인해보자 show databases를 하면 모든 DB의 목록을 볼 수 있다.

 

 

 

데이터베이스

DBMS(DataBase Management Sysstem)

- DBMS 안에는 여러개의 데이터를 관리할 수 있다.

- file로 저장하는데 관리하기 쉽도록, file을 관리하는 프로그램이다.

- 관계형 DBMS 로는 MySQL, Oralcle 등등이있다.

- MySQL은 정형화된 데이터를 다룰때 효과적이다.

 

1. DDL(Data Definition Language)

- 실제 데이터와는 상과없다.

- 생성 및 삭제 : CREATE, DROP ( 테이블이나 DB를 지울 수 있다. )

 

** CREATE, SHOW

-> create database 만들DB이름;

-> create table 만들TABLE이름;

 

 

show databases; 를 하면 해당 MySQL에 있는 DB목록들을 볼 수 있다.

create database 만들DB이름; 을 하면 해당이름으로 DB를 생성한다.

 

 

create table 만들TABLE이름 ( 컬럼이름 속성, 컬럼이름 속성, ... );

속성에는 Type과 Null, Key 등등을 정할 수 있다.

not null : 비어있지 않도록

auto_increment , primary key : 만드는 순서대로 숫자배열

primary key : 중복이 되지 않도록

desc 만든Table이름; 만든Table의 속성을 확인할 수 있다.

 

** DROP

-> drop database 만든DB이름;

-> drop table 만든TABLE이름;

 

 

drop database 삭제할DB이름; 은 해당DB를 삭제한다.

 

 

drop table 삭제할Table이름; 은 해당Table을 삭제한다.

이때 해당테이블이 서로다른 DB에 존재할 수 있기때문에 use DB이름; 으로 해당DB를 선택한뒤 해당DB안에있는 Table을 삭제한다.

 

 

2. DML(Data Manipulation Language)

- 데이터를 조작할 수 있는 구문

- 조회, 입력, 수정, 삭제 : SELECT, INSERT, UPDATE, DELETE

 

** SELECT

-> select 조회하려는컬럼 from TABLE이름;

-> select 조회하려는컬럼 from TABLE이름 where 컬럼='찾는내용';

 

 

select * from TABLE이름; 은 *은 모든컬럼을 조회한다. 따라서 해당 TABLE의 모든내용을 볼 수 있다.

 

 

* 위치에 해당 컬럼들을 입력하면 해당컬럼의 내용만 조회할 수 있다.

 

 

select는 다른구문과는 다르게 문자열을 출력하기도한다.

 

** INSERT

-> insert into user_info (컬럼, 컬럼) value (입력값, 입력값);

-> insert into user_info value (입력값,입력값,...);

 

 

no에는 1 id에는 hi pw에는 md5('1234')라는 값이 입력된다.

여기서 md5는 해시함수로써 해당 1234 문자열을 일정한 길이의 값으로 바꾼다.

해당 컬럼수만큼 순서대로 값이 입력된다.

 

 

table 설정에서 auto_increment와 primary key 설정을 했을 시에 주의해야한다. 위와같이 1번 정보를 입력한뒤 임의적으로 5번이라고 지정하면 번호순서대로 저장되는 auto_increment 속성에 적합하지 않다. 아래와 같이 id, pw만을 따로 입력한다면 no는 자동으로 입력된다.

 

 

auto_increment와 primary key를 설정했을 경우에는 이런방법을 통해 입력하는것이 바람직하다.

 

** UPDATE

-> update TABLE이름 set 컬럼='수정할 값'

-> updata TABLE이름 set 컬럼='수정할 값' where 컬럼='수정될 값'

 

 

where 조건을 사용하지않으면 해당 테이블의 id값이 전부 bye로 바뀌게된다.

 

 

where 조건을 이용한다면 원하는 값만 수정할 수 있다.

 

** DELETE

-> delete from 삭제하려는TABLE이름;

-> delete from 삭제하려는TABLE이름 where 컬럼='삭제하려는 값';

 

 

where조건을 사용하지 않는다면 만들어놓은 테이블의 모든내용이 한번에 삭제된다. 이때 테이블 속성은 그대로 남아있다.

 

 

where조건을 이용해 테이블중 원하는 목록만 삭제할 수 있다.

 

3. DCL(Data Control Language)

- 데이터를 제어할 수 있는 구문

- 권한, 트랜잭션( 누군가 수정을 할때 다른사람이 조회를 못하도록 하려고 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'정보보안 > 웹보안' 카테고리의 다른 글

웹보안_12. 해시와 암호화의 차이  (0) 2018.02.26
웹보안_11. MYSQL과 PHP연동하기  (0) 2018.02.24
웹보안_9. 웹페이지 인증  (0) 2018.02.22
웹보안_8. GET/POST방식  (0) 2018.02.21
웹보안_7. php  (0) 2018.02.20
Comments