알쓸전컴(알아두면 쓸모있는 전자 컴퓨터)

Django 데이터 베이스 설정 본문

Web /Django

Django 데이터 베이스 설정

백곳 2017. 8. 5. 22:55

 데이터 베이스


 처음으로 Django 를 사용 해서 프로젝트를 만들면 Database 중 Sqllite를 사용하게 됩니다. 


프로젝트 폴더에 보면 db.sqlite3 파일이 있는것을 확인 할수 있습니다. 


하지만 보통 프로젝트를 할때에 mssql,mysql,mariadb,oracle 등등 데이터 베이스를 사용하게 됩니다. 


저는 여기서 mariadb 를 사용하겠습니다.


mariadb는 mysql와 거의 98% 호환 됩니다.  그냥 설치는 mariadb로 하고 사용법은 mysql 을 따르면 됩니다. 


mariadb를 사용하는것은 mysql 이 오라클로 넘어가면서 라이센스 정책이 변경되었기 때문에 완전 무료인 mariadb를 사용합니다. 


$ sudo apt-get install mariadb-server-10.0 


사용은 그냥 mysql 사용과 똑같이 


$sudo mysql -u root


처럼 사용하면 되지만 


root에 초기 비밀번호설정을 해줘야 합니다. 


$sudo mysql -u root


MariaDB [(none)]>  use mysql

MariaDB [(mysql)]>  update user set password = password('비밀번호') where user = 'root';

MariaDB [(mysql)]>  flush privileges;


입력 하면 root 초기 비밀번호셋팅이 완료 됩니다.


일단 원격 접속 가능한 계정을 만들어야 합니다.


$sudo mysql -u root -p

MariaDB [(none)]> INSERT INTO mysql.user (host,user,password) VALUES ('%','djangouser',password('1234'));

MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'djangouser'@'%';

MariaDB [(none)]> FLUSH PRIVILEGES;


저는 위와 같이 모든 IP 원격 접속 허용,DB 접근 허용 계정을 만들었습니다.


이후에 django 서비스에서 사용할 데이터 베이스를 만들어 줘야합니다. 


$ mysql -udjangouser -p

MariaDB [(none)]> create database djangodb;


저는 DB 이름을 djangodb 라고 만들었습니다.



/etc/mysql/mariadb.conf.d/50-server.cnf의 파일을 열어서 수정을 해줘야 합니다. 


$sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf


bind-address            = 127.0.0.1  을 

#bind-address            = 127.0.0.1 으로 주석 처리 해줍니다. 


mysql 을 재시작 해줍니다. 


$sudo service mysql restart



이제 원격 접속을 해보겠습니다.


저는 접속 프로그램으로 다른 컴퓨터에서 HeidiSQL GUI 클라이언트 프로그램을 사용하겠습니다. 



위와 같이 접속에 성공 했습니다. 


실무에서는 저 같은 경우에는 명령어를 모두 치는것보다는 GUI를 다루는 것이 신속하고 정확해서 GUI 프로그램을 사용 하는 편입니다. 


또한 위의 프로그램은 무료이면서 GUI 로 하는 행동 모두를 SQL 쿼리를 보여주니 배움에도 좋은 자료가 됩니다. 


이제 mysite/settings.py 의 파일을 수정해서 mysql로 Django 가 사용할수 있게 셋팅을 해줘야합니다, 



$ nano mysite/settings.py 


INSTALLED_APPS = [

    'django.contrib.admin',

    'django.contrib.auth',

    'django.contrib.contenttypes',

    'django.contrib.sessions',

    'django.contrib.messages',

    'django.contrib.staticfiles',

]


파일 안에 위와 같은 내용이 있는데 간략히만 소개 하고 나중에 깊게 공부 하겠습니다. 

django.contrib.admin – 관리용 사이트, 곧 사용하게 될겁니다.

django.contrib.auth – 인증 시스템.

django.contrib.contenttypes – 컨텐츠 타입을 위한 프레임워크.

django.contrib.sessions – 세션 프레임워크.

django.contrib.messages – 메세징 프레임워크.

django.contrib.staticfiles – 정적 파일을 관리하는 프레임워크.


LANGUAGE_CODE = 'en-us' 을 

저는 LANGUAGE_CODE = 'ko-KR' 으로 수정 했습니다. 


기본 설정으로는 sqlite3 베이스로 

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.sqlite3',

        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),

    }

}

설정 되어 있습니다. 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': '프로젝트명',
        'USER': '사용자 이름',
        'PASSWORD': '비밀번호',
        'HOST': 'localhost',
        'PORT': '',
    }
}
다음과 같이 설정 하면 
example ) 
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'djangodb',
        'USER': 'djangouser',
        'PASSWORD': '1234',
        'HOST': '127.0.0.1',
        'PORT':'3306',
    }
}




일단 python 가상환경에 mysql 사용을 위한 라이브러리를 설치해 줍니다. 

$ sudo apt-get install libmysqlclient-dev

pip install mysqlclient


이제 django가 mysql에 Django가 필요한 DB를 설치 해도록 해줘야합니다. 


$ python ./manage.py migrate

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying sessions.0001_initial... OK


다음과 같이 성공 했으니 확인 하겠습니다. 



위와 같이 아까 없던 테이블들이 생기게 되었습니다. !! 




'Web > Django' 카테고리의 다른 글

Django 모델 만들기  (0) 2017.08.07
Anaconda 가상환경 spyder IDE 적용  (0) 2017.08.07
Django start app 만들기  (0) 2017.08.05
Django 와 apache2 연동  (3) 2017.08.05
Django 기본 프로젝트 만들기  (3) 2017.08.04
Comments