본문 바로가기

PHP에서 MySQL 연동이 안 된다면 라이브러리 버전을 확인해 보자

728x90
반응형

블로그를 뒤져 APM을 설치 했는데 PHP 버전이 5.1이다. yum으로 설치 가능한 패키지 버전 중에 5.3이 있어서 업그레이드를 마음 먹었다. 구글링으로 찾아낸 어느 외국인의 블로그에서 간단하게 정리 된 포스팅을 보고 어렵지 않게 업그레이드가 가능했다. php하나를 구동하는데 여러 개의 프로그램들이 설치 됐다.

 

다음은 MySQL을 업그레이드 시작했다. 5.5버전을 RPM으로 설치 할 수 있었다. 데몬 실행도 문제 없고 mysql 실행도 잘 되고 있었다. 가벼운 마음으로 phpMyAdmin을 설치했는데 로그인이 되지 않는다. MySQL을 전혀 인식하지 못하는데 오류 번호를 검색하니 MySQL을 재설치 하라는 안내만 나온다. 하지만 MySQL을 몇 번을 재설치하고 다운그레이드까지 했는데도 phpinfo()에는 여전히 mysql 정보를 볼 수 없었다.

 

한참을 고생하다 문득 내가 사용했던 명령 라인 하나가 생각났다.

# yum remove mysql* mysql-*

"mysql"로 시작하는 yum 패키지를 제거하는 명령이다. 당연히 mysql만 제거 될거라 생각했다. 혹시나 하는 마음에 yum으로 설치 된 php와 mysql 프로그램들을 검색하게 됐다.

# yum list installed | grep -i mysql

yum으로 설치 된 패키지 중에서 이름에 mysql이 포함 된 프로그램들 목록이 뜬다. 나는 php5.3으로 업그레이드 하면서 분명히 php53-mysql을 설치한 기억이 있는데 목록에 없다. 아마도 mysql을 제거하는 중에 실수로 php-mysql까지 제거하게 된 듯 했다. 나는 다시 php53-mysql을 설치했다.

# yum install php53-myql

# service httpd restart

phpinfo()를 확인하니 MySQL이 제대로 연동 된다.

 

※ 원인이 php-mysql, php53-mysql 때문인지는 확실하지는 않다. php와 mysql이 연동되지 않아 고민하던 차에 우연하게 발견하게 된 방법으로 경우에 따라서는 다른 원인이 있을 수 있다. 다만 여러 개의 해결책 중 참고 정도 하면 될 거 같다.

 

■ MySQL 5.x에서 16바이트로 암호화가 된다면?

MySQL5.x을 설치 했는데 DB에 저장 된 비밀번호가 16Byte로 된 4.x 이전의 암호화 되고 있었다. 이럴 때는 my.cnf를 열어 설정을 바꿔주자.

//-- cafe24 가상서버호스팅일 때 

# vi /etc/my.cnf

[mysqld]
old_password = 0

# service mysqld restart

mysql>select password('123');
mysql>select old_password('123');

두 개의 명령어를 실행해 보면 차이를 알 수 있다. 첫번째 줄에서 암호화 된 문장이 41Byte로 출력 된다면 정상으로 설정이 된 상태다.

■ MySQL 데몬이 실행되지 않을 때

카페24에서 가상서버호스팅을 받았을 때 여느 독립서버와 차이가 있어서 조금 헤매게 된다. MySQL을 설치 했는데 데몬이 실행 되지 않는다면 my.cnf에서 socket 파일을 경로를 수정해보자.

# vi /etc/my.cnf

[mysqld]
datadir=/var/lib/mysql
socket=/tmp/mysql.sock

[client]
port=3306
socket=/tmp/mysql.sock
default-character-set = utf8

# service mysqld start

728x90
반응형