** 10일차 (빅데이터 처리 시스템 개발)**
복습퀴즈
(0) 기존 SQL Server를 설치한 가상머신은 스냅숏 해놓기. (1) Windows Server를 초기화 하고, MariaDB 10.3 버전을 설치 후 p52 구축
--> 복사하지 말고 직접 입력하기.
(2) Windows Server를 초기화 하고, MySQL 5.7(32bit) 버전을 설치 후 p52 구축 –> 단, MySQL 서버만 설치하고 Workbench는 설치하지 말것 –> 클라이언트는 HeidiSQL을 검색해서, 다운로드 후 사용하기.
외부에서 접속하기(MySQL)
-
서버
. 서비스 작동 확인(MySQL) . 방화벽 포트 열기 확인(3306) . 서버 IP 주소 확인 . 외부접속 전용 사용자 생성 –> winUser@’%’
CREATE USER winUser@'%' IDENTIFIED BY '비번'; GRANT ALL ON *.* TO winUser@'%';
-
클라이언트
. Workbench 설치 . 접속 시도………
외부에서 접속 (SQL Server)
- 서버
. 서비스 작동 확인(MSSQLSERVER) --> SQL Server 구성 관리자 . 방화벽 포트 열기 확인(1433) . 서버 IP 주소 확인 . TCP 접속을 허용 --> SQL Server 구성 관리자 >> SQL Server 네트워크 구성에서 TCP/IP를 사용으로 변경 . sa 사용자 접속 허용 : SSMS >> 보안 >> 사용자 >> sa
- 클라이언트
. HediSQL설치 . SELECT * FROM sys.databases;
리눅스 가상머신 (MariaDB)
- 서버 하드웨어
. 네트워크1 --> Nat . 네트워크2 --> 호스트 전용 . RAM 2048
- 서버 설정
```
.로그인 : root/PASSWORD
.현재활동 » 터미널
. ip 설정 변경 : 오른쪽 위 클릭 후 [설정] 아이콘
–> 네트워크
- enp0s3 (외부용. Nat) –> DHCP
- enp0s8 (내부용.HostOnly) –> DHCP . reboot . IP 확인 (내부용, enp0s8) : ifconfig 192.168.56.106 ```
- 서버에 MariaDB 설치 및 설정 ``` . 설치 : dnf -y install mysql-server . 서비스 작동 및 상시 가동 systemctl restart mysqld systemctl enable mysqld
. 방화벽 전체 끄기 systemctl stop firewalld systemctl disable firewalld
. 외부접속 전용 사용자 생성 –> winUser@’%’ mysql CREATE USER winUser@’%’ IDENTIFIED BY ‘비번’; GRANT ALL ON . TO winUser@’%’; EXIT . halt -p
# 퀴즈1. 리눅스에서 작업하기.
리눅스 MySQL 터미널에서 p52 구축 (한영 전환은 Shift+Space 키)
# 퀴즈2. 리눅스를 [설치완료]로 초기화 한후.
MariaDB 설치 후, PC의 HeidiSQL에서 접속하고 p52의 구축 (SQL은 복/붙해도 됨)
설치는 mariadb-server, 서비스는 mariadb
# 퀴즈3. Windows Server 가상머신에,
PC의 SSMS에서 접속한 후, p52의 구축 (SQL은 복/붙해도 됨)
# 퀴즈4. SQL Server에서 Select 하는 파이썬 코딩.
(중요!) 다음 미션 전이 미리 다음을 정리하기.
- DBMS 설치법 요약 (MySQL, MariaDB, SQL Server, 리눅스 환경에서 설치도...)
- 외부 컴퓨터의 DBMS에 접속하기 위한 설정 및 방법 요약
- 데이터베이스 생성, 테이블 생성, 데이터 입력, 데이터 조회 쿼리문 요약
- 파이썬에서 데이터베이스 연동방법 요약
## 미션1. 리눅스 가상머신의 MariaDB에 p193 구성 (Insert문은 카페에 등록)
단, DB 이름은 'sqlDB_자기이름영문약자'로... 예) 홍길동은 sqlDB_HKD
테이블 이름도 '테이블이름_HDK' 형식으로..
## 미션2. Windows Server 가상머신의 SQL Server에 위 미션1과 동일 작업
## 미션3. 파이썬에서 미션1을 수행. 미션1의 테이블을 삭제하고, 파이썬에서 테이블 생성부터 데이터 조회까지 진행
## 미션4. 파이썬에서 미션2를 수행.
---
# 10-01. MySQL 연동 1
```python
import pymysql
## 전역 변수 선언부
conn, cur = None, None # 교량과 트럭
## 메인 코드부
#1. 서버와 교량을 연결하고, 빈트럭 준비
conn = pymysql.connect(host='192.168.56.105', user='winUser', password='4321',
db='hanbitDB', charset='utf8')
cur = conn.cursor() # 빈 트럭 준비
#2. 트럭에 실을 물건(SQL)을 준비
sql = "CREATE TABLE IF NOT EXISTS user_table(uid CHAR(8), uname CHAR(5),"
sql += "uemail CHAR(20), byear INT)"
#3. 트럭에 물건을 실어서 가서 부어 넣기
cur.execute(sql)
#2. 트럭에 실을 문건(SQL)을 준비
uid, uname, uemail, byear = None, None, None, None
uid = input('아이디-->')
uname = input('이름-->')
uemail = input('메일-->')
byear = int(input('생년-->'))
sql = "INSERT INTO user_table VALUES('" + uid + "', '"
sql += uname + "', '" + uemail + "', " + str(byear) + ")"
#3. 부어 넣기
cur.execute(sql)
conn.commit()
# 끝. 정리하기
cur.close()
conn.close()
print('Ok')
10-02 MySQL 연동 2 - Select
import pymysql
## 전역 변수 선언부
conn, cur = None, None # 교량과 트럭
## 메인 코드부
#1. 서버와 교량을 연결하고, 빈트럭 준비
conn = pymysql.connect(host='192.168.56.105', user='winUser', password='4321',
db='hanbitDB', charset='utf8')
cur = conn.cursor() # 빈 트럭 준비
#2. 물건(SQL) 준비 + 트럭에 실어서 부어 넣기
sql = "SELECT * FROM user_table"
cur.execute(sql)
#3. 돌아온 트럭(cur)에서 하나씩 꺼내기
while True :
row = cur.fetchone() # 한칸 꺼내
if row == None :
break
uid = row[0]
uname = row[1]
uemail = row[2]
byear = row[3]
print(uid, uname, uemail, byear)
# 끝. 정리하기
cur.close()
conn.close()
print('Ok')
10-03 SQL Server 연동 1
import pymssql
## 전역 변수 선언부
conn, cur = None, None # 교량과 트럭
## 메인 코드부
#1. 서버와 교량을 연결하고, 빈트럭 준비
conn = pymssql.connect(server='192.168.56.105', user='sa', password='p@ssw0rd',
database='hanbitDB')
cur = conn.cursor() # 빈 트럭 준비
#2. 트럭에 실을 물건(SQL)을 준비
sql = "CREATE TABLE user_table(uid CHAR(8), uname CHAR(5),"
sql += "uemail CHAR(20), byear INT)"
#3. 트럭에 물건을 실어서 가서 부어 넣기
cur.execute(sql)
#2. 트럭에 실을 문건(SQL)을 준비
while True:
uid, uname, uemail, byear = None, None, None, None
uid = input('아이디-->')
if uid == "" or uid == None :
break
uname = input('이름-->')
uemail = input('메일-->')
byear = int(input('생년-->'))
sql = "INSERT INTO user_table VALUES('" + uid + "', '"
sql += uname + "', '" + uemail + "', " + str(byear) + ")"
#3. 부어 넣기
cur.execute(sql)
conn.commit()
# 끝. 정리하기
cur.close()
conn.close()
print('Ok')