빅데이터 프로그래밍/Python

[Python] 33. [MySQL] 서버 실행, 관리자 root계정 암호화, root 접속 설정, 계정 생성

밍글링글링 2017. 8. 21.
728x90

[01] MySQL 서버 작동 

1. MySQL 서버 작동 
   1) C:/홈 폴더/mysql56/bin/mysqld.exe 실행(d: damon) 
   2) 방화벽 옵션은 '액세스 허용'을 선택합니다.   
   3) mysqld.exe가 [작업관리자 -- 프로세스]에 실행중인지 확인합니다.
      작업 관리자 호출은 'Ctrl + Shift + ESC' 키를 동시에 누릅니다.
   

[02] MySQL 서버에 root 계정으로 접속 

1. MySQL 서버에 root 계정으로 접속 

   - mysql 최고 관리자 계정이며 처음 mysql 설치시 패스워드가 지정되어 있지 
     않습니다. 
   - 클라이언트 실행 
     . -u: 계정 지정 옵션, root: 최고 관리자 계정 
     C: 
     CD/ 
     CD 홈 폴더/mysql56/bin
     mysql            <-- 아무런 설정 없이 로그인 가능, 매우 위험
     mysql -u root  <-- root 관리자 계정으로 로그인
    

2. root 계정 패스워드의 변경
   - 데이터베이스에서 사용하는 명령어(언어)를 SQL이라고 합니다. 
   - SQL은 대소문자 상관 없음.
   - SQL 명령어의 종료를 선언하기위해 명령어의 마지막은 ';'을 입력합니다. 

   1) 데이터베이스 목록을 봅니다. 
   

  mysql> show databases;


   
2) 사용하려는 시스템 데이터베이스를 연결(데이터베이스 변경) 합니다. 
     

mysql> USE mysql; 
Database changed


   3) 하나의 데이터베이스에 등록된 테이블들의 이름을 전부 출력 
     

mysql> show tables;


    
   4) 등록된 계정 출력 
      - host: mysql 서버에 접속하려는 client 위치 
              '127.0.0.1, localhost'는 mysql이 설치된 컴퓨터를 말함, 
              특정 ip만 접근 가능하게 지정 할 수 있음.  
      - user: mysql server에 접근 할 수 있는 계정명 
      - password: 접속 패스워드 

mysql> SELECT host, user, password FROM user;

 

  5) user 컬럼이 비어있는 계정의 삭제, 리눅스용 MySQL은 존재하지 않음. 
      . 아무 계정을 입력하지 않아도 로그인되는 기능을 제거합니다. 

mysql> DELETE FROM user WHERE user=''; 
mysql> SELECT host, user, password FROM user;


  6) root 계정의 비밀번호를 전부 암호화해서 '1234'로 변경합니다. 

UPDATE user SET password=PASSWORD('1234') WHERE user='root';  
SELECT host, user, password FROM user;

 

 7) 권한 및 계정 정보를 서버에 재적용합니다. 
 

mysql> FLUSH PRIVILEGES;



 8) Mysql Client 서버 접속 종료 
 

mysql> exit

 

 9) 비밀번호 지정후의 로그인 
      -u: 로그인 계정 지정 
      -p: 패스워드를 입력받는 계정임, 패스워드가 설정되 있으면 명시함.  
      mysql: 기본 데이터 베이스 지정, use mysql 명령을 사용할 필요 없음 

      * mysqld.exe 를 먼저 실행하여 서버를 작동 한 후 아래의 명령어를 
        실행합니다.

         
       ① 접속 방법 1: 설치 후 최초 접속시 사용
           C:/작업 기준 풀더/mysql56/bin> mysql -u root  

       ② 접속 방법 2: 패스워드가 있는 계정 사용시
           C:/작업 기준 풀더/mysql56/bin> mysql -u root -p

       ③ 접속 방법 3: 패스워드를 자동으로 지정한 경우
           C:/작업 기준 풀더/mysql56/bin> mysql -u root -p1234

       ④ 접속 방법 4: 패스워드와 데이터베이스를 자동으로 연결한 경우
           C:/작업 기준 풀더/mysql56/bin> mysql -u root -p1234 mysql 

[03] 데이터베이스 생성 

     - 데이터를 저장하는 가장 큰 단위이며 하나의 프로젝트와 매핑됨. 
     - 테이블, 계정의 집합으로 구성되어 있으며 많은 데이터 저장가능. 
       (View, Stored Procedure, 기타 관련 객체등으로 구성) 
     - 데이터베이스의 자료를 조작하기위해 SQL을 사용하는데 SQL은
       대소문자 구분 없음. 
     - 데이터베이스 및 계정 생성은 관리자 기능임으로 관리자 권한을
       가지고 있는 root등을 이용하여 작업해야함. 

     예)
     - 회원(member), 게시판(bbs), 자료실(pds), 갤러리(gallery), IT news, 유머, 즐겨 찾기, 설문...
       --> 개인 블로그(블로그 데이터베이스)
     - 고객 관리, 급여, 인사 관리, 자재 관리, 재고 관리, 입출고관리, 판매 관리, 예약, 배송, 영업..
       --> 시스템 통합(기업 정보 시스템 데이터베이스)
     [참고]  
     my.ini 파일에서 문자셋(utf8, euckr)등의 변경은 데이터베이스
     생성전에 이루어져야 적용이 됨으로 MySQL 설치 후 바로 설정을 합니다. 


1. 데이터베이스 생성 

   1) 데이터베이스 생성 
     

mysql> CREATE DATABASE web; 
mysql> CREATE DATABASE homepage;
mysql> CREATE DATABASE python;



   2) 데이터베이스 목록 보기 

     

mysql> SHOW DATABASES;




   3) 데이터베이스 삭제 
     

mysql> DROP DATABASE homepage; 
mysql> DROP DATABASE web; 
mysql> SHOW DATABASES;
      +-----------------------+
      | Database                |
      +-----------------------+
      | information_schema  |
      | python                   |
      | mysql                    |
      | performance_schema |
      | test                       |
      +-----------------------+

 
2. 설정된 계정으로의 로그인 

   C: 
   CD/ 
   CD 홈 폴더/mysql56/bin 
   mysql -u root -p1234 python


 
[04] 개발자 계정의 생성

   - 특정 프로젝트 데이터베이스에 접속할 계정을 생성해서 개발.
▷ /api/mysql.sql 
- 접근 거부시 DOS Consol에서 설정합니다.
-----------------------------------------------------------------------------------
   * Root 계정의 원격 접속 설정
     GRANT ALL PRIVILEGES ON *.* TO root IDENTIFIED BY '1234';
     FLUSH PRIVILEGES; 

   * 데이터베이스 생성: python + IP 끝자리 숫자
     CREATE DATABASE python100; 
     
   1) MySQL이 설치된 컴퓨터에서 localhost(현재 컴퓨터의 IP를 대신하는 별명)로
      접근 가능하게 계정을 생성하여 지정
      GRANT ALL PRIVILEGES ON python100.* TO python100@LOCALHOST IDENTIFIED BY '1234'; 
                              --------    --------                          ---- 
                                DB명       계정명                        패스워드 


   2) MySQL이 설치된 컴퓨터에서 127.0.0.1로 접근 가능하게 계정을 생성하여 지정
      GRANT ALL PRIVILEGES ON python100.* TO python100@127.0.0.1 IDENTIFIED BY '1234'; 
                              --------    --------                          ---- 
                                DB명       계정명                        패스워드 


   3) MySQL이 설치되지 않은 외부(다른 곳에 설치된 컴퓨터)에서 python1가 접근
      가능하게 계정을 생성하여 권한 지정
      GRANT ALL PRIVILEGES ON python100.* TO python100 IDENTIFIED BY '1234';
                              --------    --------                ---- 
                                DB명       계정명                 패스워드 

   4) 권한 및 계정 정보를 서버에 재적용합니다. 
       FLUSH PRIVILEGES;  



-----------------------------------------------------------------------------------

▷ /api/python1.sql 
-----------------------------------------------------------------------------------
DROP TABLE subway;

CREATE TABLE subway(
  subwayno       INT NOT NULL AUTO_INCREMENT,  -- 처리 번호
  loading_date  VARCHAR(8)   NOT NULL,        -- 조회 날짜
  line_num        VARCHAR(20) NOT NULL,        -- 호선
  subNameItem VARCHAR(20) NOT NULL,        -- 역이름
  ride_pasgr_num INT DEFAULT 0 NOT NULL,   -- 승차인원
  alight_pasgr_num INT DEFAULT 0 NOT NULL, -- 하차인원
  PRIMARY KEY (subwayno)
);

INSERT INTO subway(loading_date, line_num, subNameItem, ride_pasgr_num, alight_pasgr_num)
VALUES('20170423', '경부선', '신도림', 1000, 2000);

INSERT INTO subway(loading_date, line_num, subNameItem, ride_pasgr_num, alight_pasgr_num)
VALUES('20170423', '경부선', '영등포', 2000, 2100);

INSERT INTO subway(loading_date, line_num, subNameItem, ride_pasgr_num, alight_pasgr_num)
VALUES('20170423', '경부선', '노량진', 3000, 3200);


SELECT loading_date, line_num, subNameItem, ride_pasgr_num, alight_pasgr_num
FROM subway
ORDER BY loading_date DESC;

 loading_date line_num subNameItem ride_pasgr_num alight_pasgr_num
 ------------ -------- ----------- -------------- ----------------
 20170423     경부선      신도림                   1000             2000
 20170423     경부선      영등포                   2000             2100
 20170423     경부선      노량진                   3000             3200

-----------------------------------------------------------------------------------
 

728x90

댓글