Tagged: MySQL

Apache Tomcat JNDI 설정

Apache Tomcat 도 JNDI 설정을 할 수 있다. 특히나 데이터베이스 연결을 위해서 JNDI 설정을 사용할 수 있다. JNDI 를 사용하면 Web Application 내에서 데이터베이스 연결을 할 필요가 없이 네이밍(Naming) 을 호출함으로써 간단히 해결된다.

이 문서에서는 MySQL 을 위한 Apache Tomcat JNDI 설정 에 대한 것이다.

MySQL Connector/J 설치

JNDI 를 이용해서 MySQL 연결을 설정하기 위해서는 MySQL Connector/J 를 먼저 설치해줘야 한다. 이것은 MySQL 홈페이지에서 다운로드 가능한데 파일이 jar 확장자를 가진 하나의 파일이 필요하다. 이 파일을 Apache Tomcat 라이브러리 디렉토리에 복사해주면 끝난다.

Apache Tomcat JNDI 설정

MySQL Connector/J 를 설치했다면, 이제 Apache Tomcat JDNDI 설정을 해야 한다. 이는 Apache Tomcat 의 conf 디렉토리에 context.xml 파일을 다음과 같이 설정 한다. 이 설정을 위해서는 MySQL 연결 정보를 알고 있어야 한다.

이렇게 해주고 Web Application 에 web.xml 파일을 설정이 필요하다.

web.xml 설정

Java Web Application 에서는 web.xml 파일이 존재한다. 여기에 JNDI 을 인식시키기 위해서 다음과 같이 설정 해줘야 한다.

Spring Context 설정

Spring 을 사용한다면 다음과 같이 JNDI 를 호출 할 수 있다.

여기서 주의해야할 것은 jndiName 이 ‘comp/env/’ 를 덧붙인다는데 있다. 앞에 설정을 보면 ‘jdbc/MySQLDS’ 로만 설정 된되지만 Spring 에선 ‘comp/env/’ 를 앞에서 붙여주는 것이 다르다.

 

Creative Commons License
Apache Tomcat JNDI 설정 by Voyager of Linux is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

[번역] MySQL 5.7.6 릴리즈. 큰 변화에 준비하자.

이 글은 “MySQL 5.7.6 is out. Be prepared for big changes” 를 원작자의 허락을 받아 번역한 것입니다. 원본은 아래의 주소에 있습니다. 번역을 허락해준 Giuseppe Maxia 씨에게 감사 합니다.

오늘 오라클(Oracle)이 MySQL 5.7.6 마일스톤 16을 릴리즈(Release) 했다. 이것으로 MysQL 5.7 은 개발에 2년이 넘게 소요됐다. MySQL 5.6과 비교해 바뀐점은 아주 넓다. 주요한 팀(개발 팀)의 노력은 이전 릴리즈와 비교해 2배에서 3배의 성능 향상을 가지는 , MySQL 의 동작,스피드에 포커스를 맞춰왔다. 무엇이 새로운지에 대한 전체 리스트는 여기에 가지고 오기에는 너무나 많은 공간이 필요해, 나는 몇가지 키포인트들만 언급할 것이다.

  • 오라클은 MySQL 보안과 안전성 개선에 상당히 많은 에너지를 소비했다. 많은 새로운 기능을 볼수 있겠지만 아주 오래된 기능들은 deprecated 되었고 5.6에서 deprecated 된것들은 삭제되었다.
  • 설치과정은 MySQL 5.7 릴리즈되는 매 마일스톤마다 항상 좀 더 향상되는 것을 목표로 바뀌어왔다.하지만 이러한 노력은 이전버전과의 호환성을 깰 것이다.

이 기사에서는 나는 설치과정에서 크게 바뀐 부분을 언급할 것이다. MySQL 5.6 에서 mysql_install_db 는 데이터베이스 생성중에 랜덤 패스워드 생성기에 대한 옵션을 가지고 있다. 이 과정은 익숙하지 않지만 오랜시간동안 패스워드없이 root 사용자를 생성하도록 했던것을 직접적으로 끝장을 내는 행보였다. MySQL 5.7.4 에서, 그것은 좀더 바뀌어서, 랜덤 패스워드 생성기는 -skip-random-password 옵션으로 건너뛸 수 있지만 어쨌든 기본값이 됐다. MySQL 5.7.5 에서, 기본은 확정되었고 옵션은 -insecure 로 바뀌었다.

그리고 이제, MySQL 5.7.6 에서, 오래된 관행을 단속하고자: mysql_install_db 는 deprecated 됐고 mysqld -initalize 로 바뀌었다. (예전에 “mysqld -bootstrap” 으로 알려졌던 것은 현재 deprecated 됐다)

여기서 테스트 해보자:

이전 버전과 비교해, 가장 주목할 차이는 .mysql_secret 파일이 없다는 것이고 스크린에 임시 패스워드가 짧은 줄로 언급된다. 또, 한가지 더 중요한 행동상의 차이점으로 이 명령어는 오직 한번만 작동한다. 만약 데이터 디렉토리가 존재한다면, 그 스크립트는 데이터 생성 명령어들을 다시 적용할려고 할 것이다. mysqld -initialize 사용은 데이터 디렉토리가 존재하지 않을때에만 실행된다.

새롭게 생성된 데이터베이스 사용을 위해서는 이전과는 다른 꼼수가 있다.

우잉? 이게 뭘까? 이 명령어는 최근까지 잘 동작했다. 원인은 SET PASSWORD 문법이 변경되었는데 이제는 생자 텍스트를 인수로 받는다.

오래된 문법은 오직 deprecated 되었다는걸 뜻하지만 이것은 순간적으로 완벽하게 제거될 수 있다. 이것은 MySQL 5.7.7 에서 고쳐지길 희망한다. (뭔소리냐.. ㅡㅡ;;)

더 많은 변화는 GRANT, REVOKE, CREATE USER, 그리고 ALTER USER 사용에서 일어났는데 현재 좀 더 제한적이다. 만약 GRANT 명령어로 사용자들을 생성하려고 한다거나 승인권한을 인증옵션과 섞으려고할때에 경고 메시지를 받을 수 있다.

요컨대, 만약 MySQL을 설치하고 관리하는 자동화된 스크립트를 가지고 있다면, 당신은 waringins 을 활성화하고 테스트해야 한다, 오래된 관습을 가지는 호환성이 깨지는것에 대비해야 한다.

One such ‘old practice’ scripts that is broken by the new syntax changes is MySQL-Sandbox. I have just released an updated version (MySQL Sandbox 3.0.48) with a workaround for MySQL 5.7.6 changed SET PASSWORD syntax.

BTW, mysql.user 테이블에 password 필드가 삭제되었다고 말했나요? 이것은 많은 테스트를 멈추게하는 또 다른 놀라운 점이다.

 

Creative Commons License
[번역] MySQL 5.7.6 릴리즈. 큰 변화에 준비하자. by Voyager of Linux is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

TIMESTAMP and DATETIME 기능 개선

MariadbMariaDB 10 버전이 올라가면 기능이 향상되는데, TIMESTAMP 와 DATETIME 의 데이터 타입(Data Type)을 사용하는 컬럼에 경우 Update, Insert 시에 몇가지 기능이 향상되었습니다.

여기서 주목해야 할 것은 ‘created TIMESTAMP DEFAULT CURRENT_TIMESTAMP‘와 ‘updated TIMESTAMP ON UPDATE CURRENT_TIMESTAMP‘ 입니다.

Default와 Extra 컬럼에 내용을 자세히 보십시오.

여기서 Insert 를 다음과 같이 합니다.

‘created’ 컬럼에 자동으로 시간이 등록됩니다. 과거에는 다음과 같이 해줬어야 했습니다.

‘now()’ 함수를 사용해서 했어야 했지만 Mariadb 10 에서 TIMESTAMP 타입을 이용해서 컬럼을 정의하면 더 손쉽게 자동으로 처리를 해줍니다.

다음과 같이 Update 를 해봅니다.

update 필드에 값이 자동으로 시간이 업데이트 됩니다. DATETIME 도 이와 같은데 다른점은 값이 없을 경우 ‘NULL’이 됩니다.

test_date2 를 만들고 다음과 같이 실행보면 값이 없을때는 NULL이 들어 갑니다.

 

Creative Commons License
TIMESTAMP and DATETIME 기능 개선 by Voyager of Linux is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.