Django로 개발을 하다보면, 초기에 sqllite로 연동돼어 있는데요 이 DB를 SQLlite 대신 MySQL 을 연동해보도록 하겠습니다.
python 에서 mysql 서버와 통신을 하기 위해 파이썬용 데이터베이스 커넥터(Databse Connector)를 해당 명령어를 통해 설치합니다. mysqlclient 를 설치하는 것을 권장하고 있는 것 같습니다.
pip install mysqlclient
초기의 프로젝트 폴더 상의 settings.py 를 보게되면, 아래와 같이 설정된 것을 볼 수 있습니다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '',#db명
'USER': '', #db user 이름
'PASSWORD': '', #db password
'HOST': 'localhost', #나중에 aws로 연결
'PORT': '3306', #mysql 포트번호
}
}
위 settings.py에 DB 정보를 입력하려면 mysql 에서 DB를 생성해주어야 한다. 생성하기 전 존재하는 DB는 그림과 같았다.
C:\Users\kjeng>mysql -u root -p # mysql에 root 계정으로 로그인
Enter password: **************** # password 입력
.
.
.
mysql> show databases; # 존재하는 DB 조회
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| myuser |
| performance_schema |
| sakila |
| sys |
| world |
+--------------------+
7 rows in set (0.00 sec)
(1) workbench 실행
(2) Query 메뉴 아래에 원통형 아이콘을 눌러서 새로운 스키마를 생성해줄 겁니다. 하고 싶은 Name 을 입력하고 Charset/Collation 은 utf8/utf8_bin 선택
(3) Apply SQL SCript to Databse 창이 나오면 Apply 선택 -> Finish 선택
(4) 오른쪽 톱니바퀴 옆 파란색으로 되어있는 부분을 클릭하여 다 활성화해주고 왼쪽에 Schemas 선택해서 Navigator 확인
(5) 생성된 DB 확인
(1) 왼쪽 아래 add account 후 정보 입력후 apply
-> Limit to Hosts Matching 의 default 값은 % 인데 이는 어느 컴퓨터에서나 접속 가능하게 한다는 뜻이다. 나는 해당 컴퓨터(ip)에서만 접속 가능하게 할 것이므로 localhost를 입력했다.
(2) Schema privileges 에서 add entry 클릭
(3) 해당 계정에 권한 부여
(4) 해당 스키마를 클릭한 후 아래쪽에 박스를 통해 해당 계정에 부여할 권한을 조정한다.
-> 데이터베이스 사용자가 쿼리를 자칫 잘못 입력하여 DB를 날려먹을 수도 있기 때문에 보통은 Object right 권한만 주고 Delete 권한으 안주는 경우도 있다.
(1) workbench에 home 으로 나와서 (+) 버튼을 통해 커넥션을 하나 더 추가해준다.
(2) connection 이름을 지정해주고, Username, password 에는 아까 만든 계정을 넣어준다 default Schema에는 생성한 DB를 넣어준다
(3) Test Connection을 통해 연동이 잘 되는지를 확인한 후 OK버튼으로 마무리
CLI 상에서도 연동이 잘 됐는지를 확인해본다 새로 생성한 계정으로 로그인해 보았다.
Root 계정으로 로그인했을 때도 dropbox_django DB 가 잘 생성된 것 을 확인할 수 있다.