Web 모의해킹

웹보안) 데이터베이스 개념 및 연동

5_jinseok12 2018. 3. 8. 18:04
728x90

DB를 사용하기 전 기본적으로 아래의 표를 참고하여 CHAR 과 VARCHAR의 차이를 알아야한다.

 

 

CHAR 같은 경우 CHAR(4) 즉 괄호안에 숫자를 입력한 바이트만큼만 처리한다. 

입력값이 0이어도 4바이트, 초과되어도 4바이트

그래서 고정값을 입력할 때 많이 사용된다.

 

VARCHAR같은 경우 괄호안에 숫자를 입력해놓았지만 그 숫자만큼까지 수동적으로 바뀔 수 있다.

입력값이 0이면 1바이트로 줄었다가 2개를 입력하면 3바이트, 4개를 입력하면 5바이트

값이 제각각인 것을 나타낼 때 많이 사용된다.

 

[그림 1] 데이테베이스 연결

 

#mysql -u root -p  명령어를 통해

패스워드를 입력하고 DB에 연결한다.

 

 

[그림 2] 데이터베이스 내의 계정 확인

show batabases; 명령어는 데이터베이스 계정을 확인할 수 있다.

use user; 를 통해 user 계정을 선택하여 사용한다.

CREATE TABLE user_info( id varchar(10), pw char(150));

-> 해당 계정의 user_info 테이블 안에 id를 10자 수동적 제한(varchar), pw를 150자로 고정 제한(char)을 생성한다.

 

 

테이블 생성이란? 데이터의 구조를 정의하는 것이다.

-> 데이터의 형태(숫자,문자 등 컬럼에 대한 기본 속성)를 반드시 지정해야 한다
-> 데이터의 형태에 대한 종류 ( 종류에 따라 테이블의 크기가 달라진다)

 

 

[그림 3] User_info 테이블의 정보 확인

show tables;  명령어는 해당 DB의 테이블을 보여준다.

DESC user_info;    user_info 테이블을 상세하게 보여준다.

 

 

 

[그림 4]

 

mysql> DROP TABLE 테이블 이름;   ->  테이블안에 데이터가 있어도 전부 삭제가 된다. 

mysql> DELETE TABLE 테이블 이름;  -> 데이터는 지우지만 테이블은 남아있다.


mysql> CREATE TABLE user_info( no int NOT NULL auto_increment primary key, id varchar(10), pw char(50));  

 

   default와 primary는 같이 사용할 수 없다. 중복될 수 있기 때문에. primary는 중복을 허용하지 않는다.
   NOT NULL(NULL을 허용하지 않는다) increment(자동으로 하나씩 증가)
   컬럼 이름과 테이블 이름은 대소문자를 구별하니 주의 !

 

[그림 5] 테이블이 젲대로 생성되었는지 확인

INSERT INTO 테이블 이름[(컬럼 이름, ...)] VALUE(값...);

-> 컬럼이름을 설정할 경우 VALUE와 함께 들어가지만 컬럼이름을 설정하지 않으면 테이블에 있는 형태대로 설정됨

-> 일반 숫자는 ''를 입력하지 않는다. 문자는 ''를 붙임. 안붙이면 컬럼이름으로 입력된다.

 

 

[그림 6]

SELECT는 제일 많이 사용하기 때문에 제일 중요하다고 볼 수 있다.

저장한 정보들을 조회하거나 찾을때, 또는 출력할 때 사용한다

SELECT .. FROM .. BY..

SELECT  :  최소 한개 이상의 컬럼이 들어가야 한다. 조회하려는 컬럼의 목록들..

FROM   :  조회하려는 테이블

WHERE : 조건을 통해 검색,조회(특정 사용자를 조회할 때 조건이 만족하는 것들만 출력)

 WHERE를 사용하지 않으면 자동으로 참으로 인식하기 때문에 주의해야 한다.

 

 

[그림 7]

 

SELECT no, id ,pw  FROM user_info;   :  user_info의 no,id,pw를 출력

SELECT * FROM user_info;  : user_info 안에 있는 모든 것들을 출력

SELECT id FROM user_info; : user_info 안에 있는 id만 출력

 

[그림 8]

select를 통해 출력할 수 있음을 확인할 수 있다.

 

[그림 9]

user_info 안에 여러개의 자료가 있을때 where를 통해 쉽게 찾을 수 있다.

where은 조건을 정하는것인데 where id ='user1';

즉, id중에 user1만을 출력해라 라는 의미이다.

 

 

[그림 10]

마찬가지로 no 중 1만 출력

 

 

[그림 11] Empty set (0.00sec)

값이 없는 것을 출력하고자 하면 에러메세지가 출력.

 

 

[그림 12]

 

[그림 13]

UPDATE 에서는 테이블 이름이 먼저 나온다.

WHERE를 사용하지 않으면 데이터가 두개일 때 둘다 참으로 이해하기 때문에

두개 다 정보가 바뀌니까 꼭 WHERE를 사용해야 한다. 주의하도록 하자

 

 

[그림 14]

 

[그림 15] DB 연동을 위해 필요한 설치

 

DB와 PHP를 연동하기 위해서 우선 설치를 해야한다

저기 명령어는 이미 다운받은 목록을 출력하는 것이다.

 

# yum search php-mysql 을 통해 php-mysql.i686 를 찾아본다.

#yum install php-mysql.i686 을 다운받고 위에 사진처럼 제대로 다운되었는지 출력해본다.

 

 

[그림 16] 데이터베이스에 로그인

 

$link = mysql_connect('localhost','root','password1!');  내가 설정한 DB로 연결하는 과정. 

로그인 하는 기능을 $link에 넣은 후 DB의 jinseok라는 계정을 select 한다.

       

 

[그림 17]

 

 

[그림 18]

 

vi 에서 오타가 나거나 패스워드가 틀려서 DB에 연결이 되지 않으면

die("mysql connect :".mysql_error()); 의 메세지를 출력한다.

 

 

 

 

 

반응형