요즘 3.2 에서 5.6.32 로 Data Migration 이 가능하도록 개발 중이다.
그 중에 잠시 이슈를 정리하고 간다.
MySQL 5.6.32 를 설치한 곳에서 python 으로
import MySQLdb;
를 하게 되면 아래와 같은 에러가 발생한다.
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "build/bdist.linux-x86_64/egg/MySQLdb/__init__.py", line 19, in ?
File "build/bdist.linux-x86_64/egg/_mysql.py", line 7, in ?
File "build/bdist.linux-x86_64/egg/_mysql.py", line 6, in __bootstrap__
ImportError: libmysqlclient.so.10: cannot open shared object file: No such file or directory
MySQL 설치된 곳 lib 폴더 내에 해당 libmysqlclient.so.10 파일이 없는 것을 확인 하였다.
검색하다 보니 여기저기 설정하라고 하는데 정작 설치가 되어 있지 않은 것 같아 rpm 으로 설치를 하였다.
아래 내용들은 잘못 되었다...하지만 참고하신 분들이 있을 것 같아서 삭제는 안하고 선을 그었다.
아래는 설정하라는 위치들이다.
/etc/profile
/etc/ld.so.conf
하지만 설치가 우선이라..
아래와 같이 다운 받은 후 설치 해 보자
[root@DBTEST02:/home/backup]# wget ftp://195.220.108.108/linux/Mandriva/official/9.1/i586/Mandrake/RPMS/libmysql10-3.23.55-1mdk.i586.rpm
[root@DBTEST02:/home/backup]# rpm -ivh libmysql10-3.23.55-1mdk.i586.rpm
이러면 설치는 되지만 여전히 import 할 수 없다.
그래서 해당 설치된 위치를 찾아보면 아래와 같다.
[root@DBTEST02:/home/backup]# find / -name libmysqlclient.so.10
/root/src/mysql-3.23.58/libmysql/.libs/libmysqlclient.so.10
/usr/lib/libmysqlclient.so.10
이제 /etc/profile 에 설정을 해 보자.
[root@DBTEST02:/home/backup]# vi /etc/profile
아래 내용을 추가 후 적용해 보자
LD_LIBRARY_PATH=/root/src/mysql-3.23.58/libmysql/.libs/
export LD_LIBRARY_PATH
[root@DBTEST02:/home/backup]# source /etc/profile
이러고 나면 제대로 되는 것을 확인할 수 있다.
하지만.......5.6에 접속이 되지 않는다.
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "build/bdist.linux-x86_64/egg/MySQLdb/__init__.py", line 74, in Connect
File "build/bdist.linux-x86_64/egg/MySQLdb/connections.py", line 170, in __init__
_mysql_exceptions.OperationalError: (1251, 'Client does not support authentication protocol requested by server; consider upgrading MySQL client')
그렇구나.....다시 검색이 필요하다...
의외로 간단하게 풀었다.
/usr/local/mysql/lib 폴더 내의 libmysqlclient.so.18 을 soft link를 걸어서 생성해 주었다.
[root@DBTEST02:/usr/local/mysql/lib]# ln -s libmysqlclient.so.18.1.0 libmysqlclient.so.10
[root@DBTEST02:/usr/local/mysql/lib]# chown mysql:mysql libmysqlclient.so.10
이후에 session 을 끊은 후 다시 접속하여 확인해 보니 쉽게 통과 했다.
하지만.....다른 에러를 지금 풀고있다.
위의 내용은 쓸데없이 다른 환경설정 건들지 말고 soft link(symbolic link) 로 생성해 주면 된다.
해당 내용은 일단 끝!
추가로 환경설정이 필요해서 추가합니다.
1. cd /etc/ld.so.conf
2. vi로 아무 파일명 생성하여 아래 내용 추가
/usr/local/mysql/lib
ldconfig 를 쳐서 적용
3. vi ~/.bash_profile
LD_LIBRARY_PATH=/usr/local/mysql/lib
export LD_LIBRARY_PATH
이후 source ~/.bash_profile
한 후 혹시나 하는 마음에 해당 세션 종료 후 다시 접속 후 확인
'Python' 카테고리의 다른 글
[Python] Tensorflow #1 (1) | 2017.07.06 |
---|---|
[Python Script] Maria DB Table Sync 맞추기 (0) | 2017.02.13 |
[Python] os.system / SCP 전송 (ssh 비밀번호 없이) (0) | 2016.10.25 |
[펌][Python] OS 관련 명령어 (0) | 2016.10.21 |
[펌] [python] pass, continue 차이 (0) | 2016.03.08 |