ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [산대특] MySQL, WorkBench, PHP (DB 끝!)
    [산대특]클라우드기반 빅데이터 활용 정보 시스템보안과정/DBMS 2024. 10. 10. 17:09

    1010

     

    MySQL 데이터베이스는 mysqldump라는 명령어로 백업한다. 

    mysqldump -u root -p cent_db > cent_bd.bak.sql

     

    불러 올릴 때 => source 위치

     

    원격에서 mysql -u root -prootoor -h 타겟_DB_서버해서 원격 작업 가능

    타겟 DB_서버에서는 grant all privileges on *.* to 'root'@'%' identified by rootoor;

    사전에 권한을 설정해 두어야 원격으로 들어올 수 있다.

     

    1) MySQL 테이블 조작 

    ① use(OR connect) centos_db; 하고,

    a. show tables; 해서 cent_tbl을 확인한 뒤, 

    b. desc cent_tbl; 해서 열_명을 보고 

    c. rename table cent_tbl to centos_tbl; 식으로 테이블_명을 변경할 수 있다.

     

    ② 몇 가지를 작업을 해본다.

    a. select * from cent_tbl; 해서 모든 데이터를 다 보고

     

    b. select * from cent_tbl 

       where first_name='Bee'; 해서 하나의 조건을 주거나

    =>select * from cent_tbl 

      where first_name='Bee' and town='Incheon'; 해서 두 개의 조건을 주거나

     

    c. select * from cent_tbl 

       order by last_name DESC; 해서 내림차순으로 정렬해서 본다. 

    =>DESC 대신에 ASC를 사용하면 오름차순으로 정렬한다.

     

    d. 보이는 개수를 제한한다면 limit N을 사용해서 

    select * from centos_tbl 

    order by last_name DESC limit 2; 해서 두 개의 데이터만 볼 수도 있다.

    =>Oracle에서는 rownum =< 2식으로 해준다.

     

    2) 열, 데이터 변경(alter), 업데이트(update), 삭제(delete) 구문

    ① 먼저 작업할 테이블에 대해서 기본 정보를 보는데

    a. use cent_db; 하고, 

    b. show tables; 

    c. desc cent_tbl; 

    d. select * from cent_tbl; 해본 뒤

     

    항목에 대한 변경부터 알아본다. 

    =>alter ~ add/drop/change를 사용해서 새로운 열_명을 넣고/삭제/변경할 수 있다.

    a. 항목_명 추가

    =>add ~ 를 사용한다.

    alter table cent_tbl 

    add address varchar(30) after town; 해서 town 항목 뒤에 새로운 항목 address를 넣고,

     

    b. select * from cent_tbl; 해서 확인한다. 

    현재 address에는 null 값으로 채워져 있다. 

     

    c. 항목_명 변경

    =>change ~ 를 사용한다.

    alter table cent_tbl 

    change town city varchar(20); 해서 town 항목을 city 항목으로 변경한다.

     

    d. select * from cent_tbl; 해서 변경된 것을 확인한다. 

     

    ③ 데이터의 내용 변경

    =>update ~ set ~를 사용한다.

    a. update cent_tbl 

       set city='Bucheon' 

       where id='7'; 해서 id=7인 제갈량의 city를 Daejeon에서 Bucheon으로 변경해주고,

     

    b. select city from cent_tbl

       where id='7'; 해서 확인한다. 

     

    ④ 열과 행 삭제 

    ■ 행 삭제는 delete ~ 를 사용한다.

    a. delete from cent_tbl 

       where first_name='Ryang'; 해서 제갈량의 행(레코드)를 삭제하고,  

    b. select * from centos_tbl; 해서 확인한다. id=7번이 삭제되었다.   

    =>한 번에 여러 행을 동시에 삭제한다면

    delete from cent_tbl where id in (10, 11, 12); 식으로 해주면 된다. 

    여기서 in (A, B)는 A or B의 의미이다.

     

    ■ 항목_명(열) 삭제는 drop (column) 열_명을 사용한다. 

    a. alter table cent_tbl 

      drop (column) address; 해서 다시 address 칼럼을 삭제하고, 

    b. select * from cent_tbl; 해서 확인한다. 

     

    create table cent2_tbl LIKE cent_tbl; 하면 데이터는 빼고 테이블 구조만 복사된다.

    insert into cent2_tbl SELECT * FROM cent_tbl; 하면 데이터까지 모두 복사해온다.

    =>create table cent3_tbl AS select * from cent_tbl; 하면 모든 데이터를 복사해오면서 테이블 생성 

    create table cent4_tbl AS select first_name, phone from cent_tbl; 

    하면 세 개의 항목만 데이터까지 복사해서 테이블 생성 

     

    테이블이나 데이터베이스 삭제

    =>DROP ~을 사용하면 된다.

    a. drop database cent_db; 하면 cent_db가 삭제된다. 

     

    b. drop table cent4_tbl; 해서 테이블을 삭제하고,

    테이블 구조는 그대로 놔두고 그 안의 데이터만 삭제할 수도 있는데 TRUNCATE ~를 사용한다. 

    =>truncate table cent3_tbl; 하면 테이블의 구조는 그대로 있고 테이블 안의 데이터만 삭제되는데 LIKE ~ 로 테이블 구조만 복사했을 때와 같아지게 된다.



    create user 'centos'@'%' identified by 'centos'; 

    => 원격에서 들어올 수 있는 사용자와 패스워드가 생성된다. 

     

    grant all privileges(OR insert, select, delete) on *.*(OR cent_db.cent_tbl) to 'centos';

    grant insert, select, delete on cent_db.* to 'centos2'@'%' identified by 'centos2';

    하면 centos2 사용자에게 일부 권한을 주면서 원격에서 접속하게 한다.

     

    show grants for centos3@'%'; 해서 centos3 사용자가 가지고 있는 권한을 보고 

    revoke delete on cent_db.* from 'centos3'@'%'; 해서 권한을 일부 뺏는다. 

    set password for 'centos3'@'%'=password('rootoot'); 

    하면 원격으로 들어오는 centos3 .사용자의 패스워드를 rootoor로 변경한다. 

     

    rename user 'centos3'@'%' to 'centss'@'%'; 

    해서 원격에서 들어오는 centos3 사용자를 centt 사용자면으로 변경한다. 

    drop user centss; 해서 사용자를 삭제할 수 있다.  

     

      ls /var/lib/mysql/mysql 하면 ~.frm, ~.MYD, ~.MYI 확장자 파일들이 보이는데 

    ■ ~.frm(format file) : 테이블 구조가 저장되어져 있는 파일

    ■ ~.MYD(MYsql Data file) : 실제 데이터가 저장되어져 있는 파일

    ■ ~.MYI(MYsql Index file) : 인덱스 정보가 저장되어져 있는 파일 

     

    ** MySQL에서는

    NOT LIKE, LIKE, IN(), JOIN, Group by, order by, SubQuery, Constraints, Index, View, ..등이 있다.  

     

      PHP 는 웹에서 실행되는 프로그래밍 언어.

    웹은 웹 브라우저(Chrome 등 기타 모두)가 HTML 포맷만 해석한다. 

    HTML은 정적인 페이지만 보인다. 

    html 포맷 안에 PHP가 들어간다.  

    👏 부분를 실행한 뒤 결과만 html 파일로 반환시킨다. 반환된 HTML 내용은 외부로 보인다. 

     

    => 하지만 브라우저에서 실행하면 기본 포맷이 HTML 이므로 이 HTML 부분을 모두 빼고 PHP 부분만 프로그래밍해서 실행시킬 수도 있다. 이때의 파일 포맷은 ~.php가 되고 웹 상에서 실행된다. (그래서 PHP 파일만 실행시켜도 html 로 보인다)

    <html>

    <?php

    1+2 = 3 , 결과인 3 만 html 파일로 보인다. 👏

    ?>

    </html>

     

      MySQL WorkBench 사용하기 

      MySQL을 GUI로 관리할 때 Linux에서는 phpMyAdmin으로 

    Windows 7/10 등에서는 MySQL WorkBench라는 도구를 설치해서 사용

     

    * Database를 

    Oracle + SQL Developer

    MySQL + phpMyAdmin + MySQL Workbench

    APM(Apache2 + PHP + MySQL)을 이용해서 주소록을 작성 

    =>추가로 공부하면 좋은 것들

    PHP programming 맛보기, Shell Script programming, PowerShell programming 맛보기,

    Python을 공부하기, C도 공부하기, Java을 공부하기 

     

연의 취업 도전기.