본문 바로가기

Python/Django

우분투 내 MariaDB 설치

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

root password가 없다면 그냥 enter만 치면 된다.

나는 작업 도중 오류를 맞이 했는데... 해당 오류의 해결 방법은 아래 포스팅에 따로 작성해 두었다. 

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': ''
    }
}

환경 분리 설정은 이 다음에 다시 작성 하겠다.