Django 와 MySQL을 연동하기 위해서는 프로젝트 폴더에서 settings.py을 손봐줘야한다.
하지만 데이터베이스 정보는 외부로 유출될 시 위험할 수 있기 때문에 settings.py 에 직접적으로 쓰지않고 따로 manage.py 가 있는 폴더에 my_settings.py 를 만들어서 .gitignore로 관리한다.
my_settings.py에는 다음과 같은 내용을 입력하면 되고
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'DB이름',
'USER': 'DB사용자이름', # 'root'
'PASSWORD': 'DB사용자비밀번호',
'HOST': '127.0.0.1',
'PORT': '3306',
'OPTIONS': {
'init_command': 'SET sql_mode="STRICT_TRANS_TABLES"'
}
}
}
settings.py에는 다음과 같은 내용으로 불러오면 된다.
import my_settings
DATABASES = my_settings.DATABASES
이제 연동이 되어서, python manage.py makemigrations 를 터미널에 쳤는데, 다음과 같은 에러가 나왔다.
이는 다음과 같은 코드를 터미널에 입력하여 cryptography를 설치하면 해결 할 수 있었다.
pip install cryptography
다시 python manage.py makemigrations 를 터미널에 쳤는데, 이번엔 다음과 같은 에러가 나왔다.
뚜둥, 내가 위에 Database연동할때 sola 라는 username 과 classroom이라는 dbname을 사용했는데 그게 생성이 안된것이다.
이와 같은 경우는 직접 터미널을 통해서 user를 만들고, DB를 만들어야한다. 그 과정은 다음과 같다.
1. MySQL 계정 생성 방법
mysql -u root -p
(password)
terminal에서 root 계정으로 mysql에 접속한다.
mysql > select user, host from mysql.user;
위와 같은 명령어를 통해 계정 목록을 확인해볼 수 있다.
그리고 다음과 같은 명령어를 통해 계정을 생성할 수 있다.
mysql > create user 'USERID'@'%' identified by 'PASSWORD';
예를 들어서 userid를 sola로 설정하고, localhost로 생성하고 싶다면 create user 'sola'@'localhost' by 'PASSWORD';로 입력하면 된다.
이후 계정목록을 확인해보면 같이 새로 생긴 유저가 잘나오는것을 확인할 수 있을것이다.
2. Database 생성
아래 명령어로 현재 만들어진 database의 목록을 확인할 수 있다.
mysql > show databases;
데이터베이스를 생성하기 위해서 아래 코드를 입력한다.
mysql > create database NAME;
mysql > show databases;
NAME에는 원하는 데이터베이스 이름을 작성하면 된다.
3. MySQL 계정에 권한 부여하기
다음과 같은 명령어를 사용하여 권한을 부여해줄 수 있다.
grant all on DATABASE_NAME.TABLE_NAME to 'USERID'@'% or localhost';
database 전체를 해당 계정에서 사용할 것이라면 TABLE_NAME 의 위치에 * 을 입력하여 전체 테이블에 권한을 줄 것을 알려주면 된다.
환경설정을 변경했기 때문에 위 명령어를 입력하여 변경된 부분이 mysql에 적용될 수 있도록한다.
mysql > flush privileges;
자 이제 아까 만들었던 유저계정으로 들어가서, 아까 만든 database가 잘 존재하는지 확인해보자 .
아래 사진에 나온 순서대로 코드를 입력하면 된다.
위와 같이 sola 계정에 classroom인 database가 잘 들어온것을 확인할 수 있다.
참고 출처 : https://daseul.tistory.com/34
'Project' 카테고리의 다른 글
[DataBase][Mac/M1] MySQL 또 말썽부리다.... (0) | 2024.05.17 |
---|---|
[모바일/AndroidStudio]🌴도시열섬 어플리케이션 프로젝트 (1) | 2023.12.26 |
[해커톤][호남의 얼굴]얼굴인식 출석 서비스 (39) | 2023.09.04 |
[Toyproject][Linux/Unix] 영화관 키오스크 프로젝트 (0) | 2023.07.31 |