Django 에서 DB를 기본Sqlite3에서 MariaDB 로 변경하여 셋팅하고자 했다.
MariaDB 설치
sudo apt install mariadb-server
mariadb-server설치시 mariadb-client 는 자동 설치 된다.
아래 명령어로도 설치 가능
sudo apt install mariadb-client
설치 후 마리아DB의 기본 셋팅을 위해 아래 명령어 작성 하면 root pw를 물어본다.
sudo mysql_secure_installation
나는 작업 도중 오류를 맞이 했는데... 해당 오류의 해결 방법은 아래 포스팅에 따로 작성해 두었다.
2022.09.27 - [Python/Django] - MariaDB 설치 시 오류 해결 방법 (ERROR 2002 (HY000))
정상적으로 설치된다면 아래와 같이 몇가지 설정을 물어본다
읽어보고 원하는 설정으로 셋팅 하면 된다
- unix_socket 인증 설정을 수행할 것인지
Switch to unix_socket authentication [Y/n]
- root 패스워드 설정을 진행 할 것인지
Change the root password? [Y/n]
- 익명의 사용자를 제거할 것인지
Remove anonymous users? [Y/n]
- 원격지에서 루트 접속을 허용하지 않을 것인지
Disallow root login remotely? [Y/n]
- test database를 제거 할 것인지
Remove test database and access to it? [Y/n]
- 변경된 권한을 테이블에 적용할 것인지. 단, 이건의 경우 Yes 선택을 권한다.
Reload privilege tables now? [Y/n]
내 경우 아래처럼 진행했다.
여기까지 작업하면 마리아 디비 설치가 종료 되었다.
이 이후에 MariaDB 가 실행되지 않는 경우 아래 명령어로 데몬을 띄운다.
sudo service mariadb start
이제 기존에 설치한 Django와 연결하려면 mysqlclient 를 설치해야 한다.
아래 명령어를 통해 mysqlclient를 설치하면 되는데
pip install mysqlclient
아래처럼 다시 터짐.... ㅠㅠㅠㅠ 역시 셋팅은 ㅠㅠㅠㅠ 한방에 되는게 없구나 ㅠㅠ
Collecting mysqlclient
Downloading mysqlclient-2.1.0.tar.gz (87 kB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 87.6/87.6 kB 6.3 MB/s eta 0:00:00
Preparing metadata (setup.py) ... error
error: subprocess-exited-with-error
× python setup.py egg_info did not run successfully.
│ exit code: 1
╰─> [16 lines of output]
/bin/sh: 1: mysql_config: not found
/bin/sh: 1: mariadb_config: not found
/bin/sh: 1: mysql_config: not found
Traceback (most recent call last):
File "<string>", line 2, in <module>
File "<pip-setuptools-caller>", line 34, in <module>
File "/tmp/pip-install-4sukdr0n/mysqlclient_70e7008e5da54ae3bfc1ba3710b772e7/setup.py", line 15, in <module>
metadata, options = get_config()
File "/tmp/pip-install-4sukdr0n/mysqlclient_70e7008e5da54ae3bfc1ba3710b772e7/setup_posix.py", line 70, in get_config
libs = mysql_config("libs")
File "/tmp/pip-install-4sukdr0n/mysqlclient_70e7008e5da54ae3bfc1ba3710b772e7/setup_posix.py", line 31, in mysql_config
raise OSError("{} not found".format(_mysql_config_path))
OSError: mysql_config not found
mysql_config --version
mariadb_config --version
mysql_config --libs
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: metadata-generation-failed
× Encountered error while generating package metadata.
╰─> See above for output.
note: This is an issue with the package mentioned above, not pip.
hint: See above for details.
역시 한참을 찾았는데 아래 포스팅 해주신 분의 글을 읽고 바로 해결 할 수 있었다.
https://fishpoint.tistory.com/7107
libmysqlclient-dev 패키지를 사용할 수 없습니다. mariadb
라즈베리파이 4 에서 mysql이 mariadb로 바뀌었다. 크게 달라진 점은 없지만 처음 설치할 때 명령어가 바뀌었다. $sudo apt-get install libmysqlclient-dev 명령어로 설치를 하면 아래와 같은 에러 메시지를 출
fishpoint.tistory.com
mysqlclient가 참조하고 있는
libmysqlclient-dev 가 default-libmysqlclient-dev 로 변경된것!
아래의 명령어로 default-libmysqlclient-dev 부터 먼저 설치한다.
sudo apt-get install default-libmysqlclient-dev
그 뒤 다시 mysqlclient 설치!
pip install mysqlclient
그뒤엔 터미널에서 아래 명령어로 작업을 진행 가능하다
마리아 db에 접속해서 db생성 후 해당 db에서 접속하는 쿼리를 수행하는 것.
mysql -h호스트주소 -p포트번호 -u아이디 -p비밀번호
mysql> CREATE DB명;
mysql> USE DB명;
하지만 난 HeidiSQL 을 설치해서 HeidiSQL에서 DB를 설정 했다.
데이터베이스 생성 선택 후 'DB 명'을 이름란에 작성한 후 확인 하면 원하는 'DB 명'으로 생성이 된다.
그 뒤 Django 의 settings.py 에서 방금 설정한 DB로 셋팅을 변경하면 된다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # mysqlclient librarly 설치
'NAME': 'DB명',
'USER': 'DB접속 계정명',
'PASSWORD': 'DB접속 PW명',
'HOST': 'localhost',
'PORT': ''
}
}
환경 분리 설정은 이 다음에 다시 작성 하겠다.
'Python > Django' 카테고리의 다른 글
Django ORM과 QuerySet (0) | 2022.10.22 |
---|---|
Django - Bulk_create 로 대량의 데이터 DB에 insert하기 (0) | 2022.10.12 |
Django Model - Field 들 소개 (0) | 2022.10.07 |
Django Form 작성 방법 (0) | 2022.10.03 |
MariaDB 설치 시 오류 해결 방법 (ERROR 2002 (HY000)) (0) | 2022.09.27 |