개발/MySQL

MySQL - 설치 및 기본 명령어, 원격 접속

잇(IT) 2022. 5. 17. 15:24
728x90

목차
- WEB 동작 과정
1. MYSql 설치
2. MYSql 기본 명령어
3. MYSql 원격 접속
4. MYSql 명령어

4.1 명령어
4.2 조건문
4.3 SQL Injection


- WEB 동작 과정

1. Client는 DNS Server에게 원하는 도메인의 IP 주소를 묻는다.

2. DNS Server는 Client에게 DNS에 해당하는 IP 주소를 알려준다.

3. Client는 DNS Server로부터 받은 Web Server IP 주소로 index.html 파일을 요청한다.

4. Web app을 통해 Web Server는 DB Server에 데이터를 요청한다.

5. DB Server는 Web Server의 요청에 데이터를 전송해준다.

6. DB Server로부터 데이터를 받은 Web Server는 Client에게 최종적으로 index.html 파일을 전송한다.

7. 클라이언트의 웹 페이지에는 해당 Web Server로부터 받은 웹 페이지를 띄우게 된다.


1. MYSql 설치


CentOS7에서 설정

 

yum -y install  http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm

- mysql community 파일을 다운 받는다.

 

vi /etc/yum.repos.d/mysql-community.repo

- mysql 5.7 버전을 설치하기 위해 mysql 5.7 버전에 속한 gpgcheck=0으로 변경한다.

 

yum install -y mysql-community-server

- mysql-community-server를 다운 받는다.

 

- mysql을 실행시킨다.

 

- 최초 mysql에 접속하기 위해 기본으로 설정되어 있는 password를 알아야 한다.

- grep 명령어를 통해 password를 알아낸다.

 

- password를 이용하여 mysql에 접속한다.

 

- 패스워드 변경부터 기본적인 여러 설정들을 사용자에게 맞게 설정해준다.

- 위의 설정을 전부 마치게 되면 mysql 설치가 완료된다.


2. MYSql 기본 명령어

 

* mysql -u[사용자] -p[패스워드]

 

- mysql에 접속할 사용자와 패스워드를 입력한다.

- 패스워드의 경우 -p 뒤에 입력하게 되면 외부에 보이기 때문에 보다 안전한 방법으로 로그인하기 위해선 -p 명령어만 입력하고 그 다음에 password를 입력한다.

 

* show databases;

 

- 현재 database 항목을 보여주는 명령어다.

 

* use [데이터베이스 이름]

 

- 해당 데이터베이스를 사용 및 이동하는 명령어다.

 

* show tables;

 

- 테이블 정보를 확인하는 명령어다.

 

* select [컬럼명1, 컬럼명2, ...] from [테이블명];

 

- 해당 테이블의 해당 컬럼의 데이터를 보는 명령어다.

 

* desc [테이블명];

 

- 해당 테이블의 컬럼을 나열하여 보여준다.

 

* grant all privileges on 'db명'.'table명' to '계정id'@'대역대' identified by 'password' (with grant option);

 

- 해당 계정이 select, insert, delete, update 기능 사용 부여 및 지정된 대역대에서만 접근 가능하도록 변경하는 명령어다.

 

* flush privileges;

 

- 바뀐 권한을 최종적으로 적용시킨다.

 

* exit

 

- sql를 나간다.


3. MYSql 원격 접속

 

- 다른 장비에서 원격으로 mysql에 접속하기 위해서 3306 포트 방화벽을 허용해준다.


원격 접속 할 CentOS7에서 설정

 

- 위에서 MYSql을 설치한 방법과 동일하게 MYSql을 설치 및 설정을 해준다.

 

mysql -u[사용자] -p[패스워드] -h [접속할 mysql IP 주소]

* -h 명령어를 사용하여 원격으로 해당 mysql에 접속한다.


4. MYSql 명령어


4.1 명령어

 

* select [컬럼명1] from [데이터베이스].[테이블명];

 

- 해당 데이터베이스에 있는 테이블에 속한 컬럼을 바로 보여주는 명령어다.

 

* create database [데이터베이스 명];

 

- 새로운 데이터베이스를 생성한다.

 

* use [데이터베이스 명];

 

- 해당 데이터베이스를 사용한다.

 

* create table [데이터베이스명](컬럼명1 컬럼 속성, 컬럼명2 컬럼 속성, ...)

 

- 해당 데이터베이스의 테이블을 생성 및 컬럼을 구성한다.

 

- 위에서 새롭게 생성한 데이터베이스에 테이블을 생성하고 확인한 결과다.

 

* insert into [테이블 명] values(값, 값, ...)

 

- 해당 테이블에 컬럼에 맞게 해당 값을 삽입하는 명령어다.

 

- 마찬가지로 새롭게 테이블을 생성한 모습이다.


4.2 조건문

 

- 컬럼이 no인 값중 3인 값을 보여주는 명령어다.

 

- 컬럼이 no인 값중 1 혹은 4인 튜플을 보여주는 명령어다.

 

- 컬럼이 no인 값중 3과 6사이에 있는 튜플을 보여주는 명령어다.

 

- 컬럼이 name인 값중 kim이라는 값을 가진 튜플을 보여준다.

 

- 컬럼이 name이고 k로 시작하는 값을 가진 튜플을 보여준다.

 

- 컬럼이 no이고 값이 3보다 큰 튜플을 보여준다.

 

- testtb 테이블에서 0부터 5개를 보여준다.

- no는 1, 2, 3, 4 ... 순서로 보여지지만 데이터 값은 0, 1, 2... 이렇게 인식된다.

 

- testtb 테이블에서 3부터 2개를 보여준다.

 

* union은 테이블 합친다.

 

- 컬럼은 앞에 작성한 테이블을 따른다.

 

- 컬럼이 no이고 값이 8인 튜플에 뒤에 테이블을 합친다.


4.3 SQL Injection

 

- 클라이언트의 입력값을 조작하여 서버의 데이터베이스를 공격할 수 있는 공격 방식을 뜻한다.

 

- 1=1은 참에 해당하기 때문에 앞의 조건이 무엇이든 간에 테이블의 모든 정보를 보여준다.

 

- 기본적으로 ID와 Password가 데이터베이스에 저장된 정보에 따라 튜플에 작성된 값대로 일치해야 한다.

 

- SQL Injection을 하여 하나의 ID를 통해 모든 Password 정보를 알아 낼 수 있다.

 

- 또한 ID를 모르더라도 모든 테이블 정보를 알아낼 수 있다.


 

728x90