-
MYSQL설치 및 DB생성부터 python과 연동까지SQL/MYSQL 2020. 3. 6. 00:24
1. DataBase의 중요성
이번 포스팅은 "나만의 DB"를 생성해서 불필요하게 로컬에 파일 형태로 데이터를 저장하는 것이 아닌, Database에 스키마를 정의하고 테이블로 구조화하여 데이터를 저장해서 데이터를 관리하고자 합니다.
아마 많은 분들은 "파일형태로 저장하여 쉽게 데이터를 관리하면 되지 굳이 복잡스럽게 DB를 연동하고 데이터를 추출했다가 저장하는 과정을 반복하느냐?" 라고 생각하시는 분들도 많으실겁니다.
저 역시 이에 많은 동의를 하고 이전에는 이런 생각을 많이 했던 것 같습니다. 하지만 로컬 저장소에 파일 형태로 데이터를 관리하게 되면 파일명도 "_ver1", "_ver2"....등의 최신 데이터를 저장하면서 간혹 기존의 데이터를 덮어 씌우게 되는 결과를 초래할수도 있을 것입니다. 그렇기 때문에 저 같은 경우는 메인이 되는 데이터를 DB에 저장하고 그에 파생한 데이터를 완벽히 구조화했을 때 또 DB에 저장하고 사용하고 이러한 작업을 하고 있습니다. 이렇게 하다보니 데이터가 날라가서 다시 다운로드를 받는다던가, 처음부터 다시 날린 데이터를 복구하기 위해 커널 맨위에서부터 shift+enter를 반복하는 과정이 사라지게 되었습니다.
요약하자면
- 메인이 되는 데이터, 파생된 데이터를 구조적으로 저장할 수 있음(정확성)
- 실수로 데이터를 날렸을 때나 파생 데이터를 저장하지 않고 종료한 경우 다시 그 데이터를 만들기 위한 반복작업을 할 필요 x(효율성)
그래서 이번에는 로컬 DB서버를 만들고 연동하고 저장하고 추출하는 과정을 담은 포스팅을 진행해보겠습니다.
2. MYSQL 설치
저는 Mac OS를 사용중이므로 이에 참고바랍니다.
저 같은 경우는 homebrew로 설치했는데, window를 사용하시는 분들은 따로 공식사이트에서 설치해주시면 될 듯 합니다.
Mac
>brew update
>brew install mysql
Window
3. MYSQL 환경설정
설치를 완료했다면 mysql 서버 시작합니다
>mysql.server start
그다음 mysql설정으로 넘어가주세요
>mysql_secure_installation
그러면 총 5가지의 세팅을 묻는 질문이 등장할 것입니다.
1. Would you like to setup VALIDATE PASSWORD component? (비밀번호 설정 가이드)
y : 복잡한 비번
n : 단순한 비번
2. Remove anonymous users? (사용자 설정에 관한 질문)
y : 접속시 -u 명령어 필요
n : 접속시 -u 명령어 불필요
3. Disallow root login remotely? (다른 IP에서 root 아이디로 원격접속을 설정)
y : 원격접속 불가능
n : 원격접속 가능4. Remove test database and access to it? (테스트 데이터베이스 설정)
y : 테스트 DB 제거
n : 테스트 DB 유지5. Reload privilege tables now? (변경된 권한을 테이블에 적용)
y : 적용
n : 미적용자 이제 DB에 접속하기 위한 환경설정이 다 끝났습니다.
3. MYSQL 접속
>mysql -uroot -p
그럼 패스워드를 입력하라는 메세지가 뜰텐데 이때 어떠한 문자를 입력해도 보이는 string가 없으므로 놀라지마시고 설정한 패스워드를 입력해주시면 됩니다.
4. DataBase(schema) 생성
>create database db이름;
자 이제 DB가 생성되었습니다.
이제 해당 DB에 내가 원하는 모든 데이터를 넣을 수 있습니다!
자 이제 mysql을 설치하고 DB까지 생성했다면 이를 연동하여 데이터 테이블을 삽입하거나 생성하는 작업을 거쳐야하겠죠?
제가 다음 포스팅에서 설명해드릴 내용은 로컬 서버와 DB서버를 연동하여 그 DB에 데이터를 삽입하는 작업 그리고 추출하는 작업을 python을 활용하여 진행할 예정입니다.
그러나 다음 포스팅에서는 스키마의 구조나 테이블의 구조(key값)를 크게 신경쓰지않고 내 데이터를 DB에서 이렇게 관리할 수 있구나 라는 생각을 가지실 수 있도록 간단하게 진행할 예정입니다! 감사합니다!