결론 : 버전에 맞지 않는 jdbc driver 를 사용하는 경우 위와 같은 오류메시지가 발생할수 있다.

메시지의 내용이 좀 엉뚱맞아서 한참을 헤맸다. 

더 이상한것은 URL IP 끝자리가 100번인데, 1까지만 나오는점이다.

 

상황

이전에 사용하던 DB커넥션 테스트소스를 새로운 mysql db로의 접속테스트 시도하려는데, 위 제목과 같은 오류메시지가 발생.

 

dbeaver에서도 잘 되고, myslq server에 들어가서 상태를 체크해봐도 이상없는데...

pom.xml의 jdbc driver 버전을 올려주었더니 바로 OK ㅠ.ㅠ;;;

 

그런데 이게 왠만큼 버전차이가 발생하면 이상이 없는듯하다.

구 소스에서 사용하던 드라이버 버전이 mysql 5.1.9 버전이었고, 접속하려는 DB의 버전은 8.0.x였다.

드라이버 버전을 5.1.49버전에서 멀쩡하게 돌아가는것으로 보아 해당 버전사이에 어떠한 업데이트가 있었던듯하다.

 

가급적이면 접속하려는 서버의 버전과 맞춰서 사용하자.

 



MySQL을 신규로 설치하고 기존 백업받은 파일을 import하려고 하면 아래와 같은 오류가 발생하곤 합니다.

"MySQL server ha gone away" 즉, 맛이 가버렸다는(?)...ㅠ.ㅠ

이런경우 MySQL설정파일의 옵션을 변경해주면 됩니다.

리눅스의 경우 보통은 /etc 나 mysql 설치 디렉토리에 my.cnf 라는 이름으로 존재합니다.

윈도우의 경우 "C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" 로 존재하는데, 이 파일의 경우 ProgramData가 숨김디렉토리 형태이기 때문에 쉽게 찾기가 어렵습니다.

MySQL기동시 설정파일을 읽어들여서 기동하기 때문에 기동 스크립트나 서비스 구동옵션을 참조하면 되는데, 윈도우의 경우 (서비스로 등록되어 있는 경우) 서비스 목록에서 MySQL을 선택, 속성메뉴를 선택합니다.

중간의 실행파일 경로를 마우스로 드래그해보면 실행을 위한 설정파일 정보가 나옵니다. 


제 경우는 아래와 같이 나오네요.

"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld.exe" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.7\my.ini" MySQL57


설정파일의 위치를 찾았다면 이제 해당 파일을 열어서 옵션을 변경해 줍니다.

각 옵션에 대한 대략의 내용은 아래링크를 참조하시면 됩니다.

http://mysqldba.tistory.com/26 


그중에 import시 데이터가 큰경우 하나의 패킷이 커지면서 MySQL서버가 다운되버리는 경우가 있는데, 이 옵션을 적절하게 조정해 줍니다.

이제 다시 import를 해보면 정사적으로 진행되는것을 확인할수  있을것입니다.











centos 6.9 mysql 5.7 설치

Posted 2017. 8. 15. 23:25

기존 테스트 환경의 개발DB가 CentOS6.2 에 MySQL5.5.x 였다.

다른 개발서버에 있던 dump를 import 하려니 오류가 발생한다. 

sql_mode를 바꿔야 하는데, 이게 5.7부터 변경된듯 하다.

한두개 바꿔서 될듯하지 않아서 새로운 mysql을 설치하기로 했다. 

나의 개발환경은 Windows 2008 Enterprise 의 Hyper-V 에 가상으로 Linux를 설치하여 구성한다. 

설치과정은 대략 다음과 같다.


1. 기존 CentOS 6.2 VHD 를 이용하여 새로운 가상서버를 만든다.

2. CentOS 6.x부터 추가된 rules.d / persistance 를 변경해서 네트워크를 잡는다.

3. yum update -y를 하고나니 OS 버전이 6.2에서 6.9로 업그레이드 되었다.

4. mysql 5.7을 설치한다. ( 설치 정보는 여기 를 참고했다. )  

  yum 관련 오류가 발생하면 yum clean all 을 한번 실행하면 잘 될수도 있다.

5. 설치 마지막 과정에 mysql_secure_installation 을 실행하는데,  자꾸 오류가 난다.

Error: Access denied for user 'root'@'localhost' (using password: YES)

6. 검색후 다음과 같은 내용을 찾았다. 임시비밀번호를 로그에서 찾으라는 것.

  grep 'temporary password' /var/log/mysqld.log

7. 이전과 달라진듯 한다. 이전엔 현재 OS의 비밀번호를 입력했었는데...

이후 비밀번호 설정과정에서도 영문대소문자, 숫자, 특수문자까지... 보안이 강화되었다. ㅠ.ㅠ;;; 내부에서만 쓸건데...


이상으로 새로운 버전의 CentOS6.9에 mysql 5.7을 설치한 과정 끝.


사용자 추가 및 권한 설정 ( https://dev.mysql.com/doc/refman/5.7/en/grant.html )

1. create database with utf8

CREATE DATABASE mydb
  DEFAULT CHARACTER SET utf8  
  DEFAULT COLLATE utf8_general_ci;

2. create user & grant privileges

CREATE USER 'jeffrey'@'localhost' IDENTIFIED BY 'mypass';

GRANT ALL ON db1.* TO 'jeffrey'@'localhost';

flush privileges;



« PREV : 1 : 2 : 3 : 4 : ··· : 15 : NEXT »