본문 바로가기

IT/프로그래밍

Ubuntu 14.04에 MariaDB 설치 및 python연결

Ubuntu 14.04Python과의 연동을 위해서 MariaDB를 설치 및 세팅을 하려는 과정에서

여러가지 오류들이 발생하는데 삽질을 한 부분들이 있어서 그부분들에 대해서 정리를 하고자 한다.


우선 MariaDB는 설치과정과 몇개의 모듈들을 제외하고는 MySQL과 비슷하다.

설치방법은 해당 링크 를 참조하자.

버전별로 설치 방법이 되어있다.

그럼 이제 설치를 완료 했다고 치고 삽질로 들어가 보자...

우선 우리는 MariaDBpython을 연동 시킬 계획이니 MySQL-python을 설치해야 한다.

pip install MySQL-python

설치가 잘되면 상관없는데 위에서 계속 말했든이 이 post는 삽질에 대한것이다. 그러니 삽질을 위한

오류가 발생을 해야한다. MySQL 인 경우에는 위의 MySQL-python 모듈이 문제 없이 설치될 수 있지만

우리는 MariaDB 이다. 아래의 패키지를 설치해주자.

apt-get install libmariadbclient-dev

이렇게 설치를 하고나서 다시 MySQL-python을 설치.

근데 이번엔 아래와 같은 에러가 발생..

gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -Dversion_info=(1,2,5,'final',1) -D__version__=1.2.5 -I/usr/include/mysql -I/usr/include/python2.7 -c _mysql.c -o build/temp.linux-x86_64-2.7/_mysql.o -fno-omit-frame-pointer -g -pipe -Wno-uninitialized -g -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing

_mysql.c:29:20: fatal error: Python.h: No such file or directory

compilation terminated.

error: command 'gcc' failed with exit status 1

그러면 이번에는 아래의 명령어로 python-dev 패키지를 설치

apt-get install python-dev

그 뒤에 다들 알듯이 MySQL-python 모듈을 설치... 해야 하는데 또 에러..

이번에는 이런 메시지가 출력

Command /.venv/bin/python -c "import setuptools, tokenize;
__file__='/.venv/build/mysql-python/setup.py';exec(compile(getattr(tokenize, 'open', open)
(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-iKaPZH-record/install-record.txt --single-version-externally-managed --compile --install-headers /.venv/include/site/python2.7 failed with error code 1 in /.venv/build/mysql-python
Storing debug log for failure in /.pip/pip.log

경로는 python의 virtualenv의 경로이므로 달라질 수 있지만 위와 유사한 오류가 나타나서 설치를 또

방해한다면 또 다른 패키지를 설치~ libssl-dev

apt-get install libssl-dev

그뒤에는 다들 알듯이 MySQL-python 설치. 현재로서는 해당 모듈을 설치하는데 본인은 저정도의 오류만을

발견했고 위의 방식으로 해결을 했다.

그럼 이제 편안하게 python에서 mariaDB를 연동시키면 된다.

연동하기전에 MariaDB 내부에 database를 만들자. root 권한으로 들어가서 계정도 만들어주고 db도 만들어 주고~

mysql -u root -p # 왜 mariadb인데 mysql로 실행하는지는 묻지 말자...

아무튼 위의 명령어를 입력하면~ 또 Error... 위에서도 말했듯이 이 post의 목적은 python과 MariaDB를

연동하는 것이 주가 아닌 연동을 위한 세팅과정에서의 삽질이 주다...

이번에는 이런 error 가 발생 (무조건 발생하는 것은 아니다.. error가 발생하지 않으면 더할 나위 없이 좋지...)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

해결 방법은 아래의 링크 에 자세히.

  1. touch /var/run/mysqld/mysqld.sock

  2. chown mysql /var/run/mysqld/mysqld.sock

  3. service mysql restart

3단계의 방법으로 문제를 해결. 이유와 왜 그런지에 대해서는 위에 선언한 링크로 가면 자세히 나온다.

다시 mysql -u root -p 명령어를 입력하고 비밀번호를 입력하면 mariadb가 실행되면서 db 생성 및

테이블의 생성이 가능해진다.

여기까지 해결을 했으면 그다음의 python과 db의 연동은 다음 post에서 작성을 하겠다.

궁금한점이나 수정할 부분 있으면 댓글로 남겨주세요~