그누보드를 설치 할 때 아래의 과정을 거쳐야한다.




그리고 가끔 이런 문구를 만날 수 있다.



Warning: mysqli_connect(): (HY000/1045): Access denied for user '(아이디)'@'localhost' (using password: YES) in (경로)/lib/common.lib.php on line 1435

Connect Error: Access denied for user '(아이디)'@'localhost' (using password: YES) 


mysqli_connect(): (28000/1045) 이든 mysqli_connect(): (HY000/1045) 이든 대부분의 경우 DB의 아이디와 비밀번호가 틀렸을 때 이 페이지를 볼 수 있다.


직접 서버를 만들었다면 DB 아이디를 다시 한번 확인해줘야 하며 웹호스팅의 경우에는 호스팅한 업체(사이트)에서 다시 한번 확인해야한다.


(닷홈)


이처럼 호스팅 업체에서 사이트의 DB정보를 볼 수 있다.


간혹 웹호스팅을 신청하고 생성할 때 DB 설치를 하지 않는 곳도 있는데 이런 경우에는 DB를 새로 만들어 줘야한다.


(호스팅어)


+ 가비아(Gabia)를 사용할 경우 조금 다르다.



이처럼 host 와 DB 앞에 db를 추가해줘야 한다. 


ex)

Host : db.abc.com

User : aaa

Password : pass123

DB : dbaaa




[1차 티스토리 배포]

 http://wishml.tistory.com/36



신청 인원

15명


당첨자

3명


당첨자 명단

1. 강*휘님 (ica******@naver.com)

2. 대***스님(pun*****@naver.com) (초대장 회수)

3. 김*희님 (seo*****@naver.com)


초대장 발송 기간

12월 10일 ~ 12월 12일

※ 주의사항 : 발송 후 48시간 내에 블로그를 개설

(48시간 내에 블로그를 개설하지 않을 시 초대장의 소멸을 방지하기 위해 회수 예정)



+ 이미 초대장을 받으신 분들이 있어서 당첨자를 새로 뽑았습니다.

'tistory > invitation' 카테고리의 다른 글

[1차] 티스토리 초대장 보내드립니다.  (18) 2017.12.04

mysql를 이용해 만든 DB 데이터를 다른 서버나 컴퓨터로 옮기는 방법은 여러가지가 있다.


대표적인 예시로는 콘솔을 이용하는 방법과 workbench에서 하는 방법이 있으며,


이번에 다루는 방법은 workbench를 사용하는 방법이다.


workbench를 사용하면 콘솔 사용법을 모르더라도 쉽게 따라할 수 있다는 장점이 있다.


DB를 옮기는 방법은 아래와 같다.



MySQL DB 옮기기



먼저 MySQL Workbench를 실행 시키면 아래와 같은 화면이 나올 것이다.


지금부터 옮길 파일의 스키마는 test_db 인데 예시를 위해 간단하게 데이터를 입력시켜 두었다.



왼쪽에 보면 Data Exprot 라는 것이 보일텐데 이것을 클릭해주면 해당 페이지로 이동한다.


여기서 우리가 옮길 것은 test_db 안의 test_db_table이다. 


test_db 안에 다른 테이블이 있었다면 추가로 표시됬을텐데 현재는 1개의 테이블만 보이는 모습이다.


Export to Dump Project Folder를 이용하여 파일을 저장하고자 하는 폴더를 선택한다.


필자는 DB_BACKUP 디렉토리를 만들어 사용했다.



Start Export 버튼을 누르면 백업파일이 만들어 진다.



(백업 파일)



이제 백업파일을 사용할 차례인데 이때는 Data Import/Restore를 선택한다.


Import form Self-Contained File 를 선택하여 백업하고자 하는 sql 파일을 선택하고


어떤 스키마로 넣을 것인지 선택한다. 여기서는 test_db2 스키마를 New... 를 이용하여 새로 만들었다.


이때 구조만 가져올지 데이터를 가져올지 둘다 가져올지를 고를 수 있는데


둘다 선택하겠다.




Start Import 를 누르면 test_db2 스키마에 test_db_table이 생겼고 구조와 데이터 모두 복사된 것을 알 수 있다.




이것으로 Workbench를 이용한 MySQL DB 이전 및 백업 방법을 마치겠다.


앞서 관계형 dbms의 종류에 대해 포스팅한 적이 있다.


 관계형 DBMS의 대표적인 4가지 프로그램

http://wishml.tistory.com/33?category=713871 



이번에 다룰 프로그램은 오픈소스의 장점을 가진 MySQL 이다.



MySQL 다운로드 하기



먼저 아래 링크로 이동한다.


https://dev.mysql.com/downloads/windows/installer/




특별한 사항이 없으면 계속 NEXT 버튼을 눌러주면 된다.







아래 사진의 화면에서는 필요한 프로그램을 다운 받으면 되는데 굳이 할 필요가 없다면 넘어가도 좋다.





여기서부터 중요하다.


관리자 계정의 패스워드를 설정해야 하며


추가로 Add User를 선택하여


root계정 외에 사용자 아이디를 추가할 수 있다.


실제 애플리케이션에서 root 계정으로 접속하기보단 추가로 만든 사용자 아이디에 적절한 권한을 부여하여 접속할 것을 추천한다.


(귀찮으면 root 를 사용해도 된다 ㅎ)



마지막으로 설정한 비밀번호를 입력하면 실행될 것이다.




+


사실 처음에 설치를 할 때는 몇몇 오류가 발생했다. 


MySQL Server 의 설치를 실패하는 것이었는데


프로그램을 삭제도 해보고 레지스트리 정리도 해보았으나 결국 안되었고 이것저것 만지다보니 해결했다.


아래는 문제의 오류 사진이다.


이처럼 설치도 안되고 무시하고 넘어가니 설치 과정에서 계속 오류가 발생한다.


이 상태로 접속하면 연결(connect)이 되지 않고 스키마도 생성이 안된다.


설치가 안되는 이유를 찾아보니 윈도우의 bit 문제라는 말이 있었는데


이제부턴 필자가 해결한 방법을 알아보자.



MySQL server failed 오류 해결 방법



앞서 다운받은 installer 를 다시 실행시키면 아래와 같을 것이다.


추가로 프로그램들을 다운받을 수 있는 것인데 add를 선택한다.



그리고 설치하지 못한 MySQL Servers로 들어가서 자신에게 맞는 것을 선택하여 설치한다.


자신의 windows운영체제가 32bit는 X86, 64bit는 x64 이며 필자는 이미 다운 받아서 x64비트가 없는 모습이다.






여기서 다시 오류가 발생한다면 아래의 파일을 다운 받고 다시 해보도록 한다.




vcredist_x64.exe


(이미 다운 받아서 '복구/ 제거/ 닫기' 가 보인다.)


이것은 오랜 검색 끝에 어떤 사이트에서 발견한 것인데, 필자는 이것을 먼저 설치하고 위의 과정대로 했다.


이제 다시 설치해보면 이 글의 과정처럼 설치가 잘 될 것이다.

'Web development > JSP' 카테고리의 다른 글

Apache Tomcat 설치 및 환경설정  (0) 2017.12.05
Eclipse 다운로드 및 설정  (0) 2017.12.05
jdk 설치 및 환경변수 설정 방법  (0) 2017.12.03

아파치 톰캣(Apache Tomcat)은 웹 서버 소프트웨어의 하나이며, 

'서블릿 컨테이너' 라고도 한다.(서블릿과 JSP를 실행할 수 있는 환경을 말한다.)



[Apache Tomcat] 다운로드 방법


자신에게 필요한 버전을 받으면 되며, java JDK 버전과 일치해야하는데

eclipse 에서 [window] - [Preferences] - [Server] - [RunTime]에 들어가서 add를 눌러보면 톰캣이 어디까지 지원하는지 확인할 수 있다. 




설치 과정에서는 계속 next 를 누르면 되며 아래와 같은 화면일 때는 jdk의 경로를 입력한다.




톰캣을 실행한 뒤 http://localhost:8080/ 에 접속했을 때 아래와 같은 화면이 나와야 하며 설치 과정에서 [HTTP/1.1 Connector port] 을 변경했다면 8080 대신 설정한 번호를 사용하면 된다.



그리고 필요하다면 환경 변수 설정을 할 수 있는데,

[내컴퓨터] - [속성] - [고급 시스템 설정] - [환경 변수]에서 설정할 수 있다.




톰캣이 설치된 경로를 복사하여 환경변수를 설정할 때 사용한다.



[새로만들기]를 눌러서 변수 이름과 변수 값을 만들고 [path]를 눌러서 환경변수 편집 창을 띄운 뒤 추가해주고 위로 올려준다.






이클립스는 노트패드나 에디트 플러스와 같은 단순한 편집기가 아니기 때문에 툴에 대한 적응기간이 필요하며, 구조는 단순하나 복잡한 숨은 기능이 많이 있다.





이클리스는 이클립스 홈페이지에서 다운받을 수 있다.


https://www.eclipse.org/downloads/




다운받은 프로그램을 실행하면 아래와 같다.


각자 용도에 맞는 프로그램을 다운받으면 되는데 JSP 사용을 위해 다운받을 프로그램은 'Eclipse IDE for EE Developer' 이다.



설치를 완료했으면 기본적으로 설정해야할 것이 있다.


꼭 해야하는 건 아니기 때문에 필요하지 않다면 생략해도 된다.


[Window] -> [Preference]를 선택하면 이클립스의 옵션들을 조정할 수 있는데 기본적인 설정들은 General 항목 아래에 있다.


( [Show line numbers]를 선택하면 행 번호가 표시된다. )


( 텍스트 인코딩 값을 설정할 수 있다. )


( JSP와 관련된 기본 인코딩 설정을 변경할 수 있다. )


( HTML 파일 인코딩 설정 )

( JSP 파일 인코딩 설정)






그누보드를 사용하면서 alert 경고창으로 이런 문구를 본 적이 있을 것이다.



'정상적으로 로그인하여 접근하시기 바랍니다.'


이것은 그누보드의 관리자 화면에 접속할 때 몇몇 사람들에게 생기는 현상인데 처음 접한 사람이라면 당황할 수 밖에 없을 것이다.


뿐만 아니라 관리자 화면에 접속하고서도 메뉴 등 버튼을 눌렀을 때 로그아웃 되는 현상이 발생할 수 있다.


이것에는 여러가지 이유가 있을 수 있으나 필자가 해결한 방법은 아래와 같다.


우선 필자는 처음에 데스크톱으로 ftp를 활용하여 서버에 그누보드를 설치했는데 다른 PC와 노트북으로 사이트에 접속하여 adm페이지, 관리자화면에 접속했을 때 오류가 발생하였다.


'정상적으로 로그인하여 접근하시기 바랍니다' 라는 경고창의 소스는 admin.lib.php 파일에서 찾을 수 있는데 이를 통하여 오류의 발생 원인 또한 이 파일에 있다는 것을 알 수 있다. 참고로 admin.lib.php 파일은 gnuboard/adm 폴더에 있다.


문제가 발생하는 원인을 추측해보자면 누군가가 해킹 등 나쁜 목적으로 관리자 페이지에 접근하는 것을 막기 위해 관리자 pc와 정보가 다를 때 접근을 막는 것이 이러한 문제를 일으키는 것 같다.


해결 방법

: 오류의 원인이 되는 소스를 삭제, 변경하거나 주석처리한다.



그누보드4

admin.lib.php (변경 전)

 // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.

$admin_key = md5($member[mb_datetime] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

admin.lib.php  (변경 후)

 // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.

// $admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']); 

$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . preg_replace('/; ; NCLIENT50\S*\)/',')',$_SERVER['HTTP_USER_AGENT']));

//출처 5.0.30 버전 보안툴로 인한 문제 해결 (정상적으로 로그인하여 접근하시기 바랍니다.)|작성자 질풍이


 그누보드5

 admin.lib.php (변경 전)

 // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.

$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

if (get_session('ss_mb_key') !== $admin_key) {


    session_destroy();


    include_once(G5_LIB_PATH.'/mailer.lib.php');

    // 메일 알림

    mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.\n\n관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.\n\n해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.\n\n'.G5_URL, 0);


    alert_close('정상적으로 로그인하여 접근하시기 바랍니다.');

}

 admin.lib.php  (변경 후)

 // 관리자의 아이피, 브라우저와 다르다면 세션을 끊고 관리자에게 메일을 보낸다.

/*$admin_key = md5($member['mb_datetime'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);

if (get_session('ss_mb_key') !== $admin_key) {


    session_destroy();


    include_once(G5_LIB_PATH.'/mailer.lib.php');

    // 메일 알림

    mailer($member['mb_nick'], $member['mb_email'], $member['mb_email'], 'XSS 공격 알림', $_SERVER['REMOTE_ADDR'].' 아이피로 XSS 공격이 있었습니다.\n\n관리자 권한을 탈취하려는 접근이므로 주의하시기 바랍니다.\n\n해당 아이피는 차단하시고 의심되는 게시물이 있는지 확인하시기 바랍니다.\n\n'.G5_URL, 0);


    alert_close('정상적으로 로그인하여 접근하시기 바랍니다.');

}*/




자격 조건

1. 현재 블로그를 운영 중이다.

2. 꾸준히 블로그를 운영할 것이며 계획을 가지고 있다.

3. 나는 꼭 초대장을 받아야 하며 그 이유가 있다.


신청 방법

1. 이 글의 비밀 댓글로 신청합니다.

2. 이메일 / 자신에게 해당하는 자격 조건과 그것에 대한 글


ex) abc.email.com / 현재 1년째 맛집 블로그를 운영 중이며 주소는 http://www.tistory.com/ 입니다.


신청 기간 

2017년 12월 4일 ~ 2017년 12월 10일


결과 발표 & 초대장 발송 기간

12월 10일 ~ 12월 12일

※ 주의사항 : 발송 후 48시간 내에 블로그를 개설

(48시간 내에 블로그를 개설하지 않을 시 초대장의 소멸을 방지하기 위해 회수 예정)


당첨 예정자

3명



 [1차] 티스토리 초대장 배포 : 결과발표

 http://wishml.tistory.com/42



'tistory > invitation' 카테고리의 다른 글

[1차] 티스토리 초대장 배포 : 결과발표  (20) 2017.12.10

자바는 활용 영역에 따라 일반 데스크톱 환경을 지원하기 위한 Java SE(Standard Edition, J2SE)와 기업형 애플리케이션 개발을 지원하기 위한 Java EE(Enterprise Edition, J2EE)로 나뉜다. 대규모 자바 웹 프로그램을 개발하기 위해서는 두 가지 모두 필요하지만 대부분의 JSP 관련 APT와 실행환경은 톰캣에 포함되어 있기 때문에 연습용으로는 Java SE만 설치해도 될 것 같다.


Java JDK(Java Development Kit)는 자바 실행환경과 컴파일 도구를 포함한 개발자 도구로써, 자바 소스를 클래스 파일로 컴파일하는 컴파일러 및 디버거, JavaDoc 등 개발에 필요한 유틸리티로 구성되어 있다. 그리고 자바를 실행할 때 기반이 되는 자바 가상머신(JVM, Java Vitual Machine)과 기본적으로 제공되는 다양한 클래스 집합인 API, 자바 프로그램을 실행하기 위한 환경인 JRE(Java Runtime Environment)도 포함되어 있다.




JDK 설치하는 방법


http://www.oracle.com/technetwork/java/javase/downloads/index.html 에 접속하여 JDK를 선택한다.



그리고 Accept License Agreement를 선택해야한다.



자신의 컴퓨터 운영체제에 맞는 것을 다운받는다. 필자는 Windows 운영체제 이기 때문에 Windows 버전을 다운받겠다.



그리고 설치한다. 설치할땐 계속 'next' 버튼을 눌러주면 되며 이후에 환경 설정에 필요하기 때문에 파일 위치를 기억해두는게 좋다.



다음은 환경변수를 설정할 차례이다.


이때 환경 변수를 사용 하는 이유는 '컴퓨터의 어떤 경로에서라도 Java 프로그램을 접근시키게 만들기 위해서' 이다.


내 컴퓨터 -> 속성 -> 고급 시스템 설정 -> 고급 -> 환경변수




그리고 아래 순서대로 해준다.


1. 새로 만들기

2. 새 시스템 변수 이름 설정 (JAVA_HOME)

3. 디렉터리 찾아보기

4. 앞에서 기억해둔 jdk 폴더 찾고 확인




Path 선택 후 편집


새로 만들기 -> %JAVA_HOME%\bin 입력



마지막으로 확인 버튼을 누르면 jdk 환경변수 설정이 끝난다.




제대로 설정이 됬는지 확인하기 위해서 cmd 명령 프롬프트를 사용해본다.


javac 를 입력했을 때 아래와 같다면 제대로 된 것이다.



혹시나 위와 같이 되지 않는다면 jdk 경로를 다시 한번 확인하거나 path안에 저장한 JAVA_HOME을 맨 위로 올려준다.






'관계형 DBMS (RDBMS, 관계형 데이터 베이스 시스템)' 의 종류에 대해 알아보자.


'mssql vs mysql vs oracle'


 Microsoft SQL server

( mssql )

 MySQL

 Oracle

초판

 1989

 1995

 1980

특허

 상업적

오픈 소스 

상업적 

 구현 언어

C++ 

C , C++ 

C , C++ 

서버 

운영체제 

 Linux , Windows

FreeBSD , Linux, OS X
Solaris , Windows

AIX , HP-UX , Linux
OS X , Solaris , Windows
z / OS

 지원되는 

프로그래밍

언어

 C++ , Delphi , Go
Java , JavaScript (Node.js)
PHP , Python , R
Ruby , Visual Basic

 Ada , C , C#
C++ , D , Delphi
Eiffel , Erlang , Haskell
Java , JavaScript (Node.js)
Objective-C , OCaml
Perl , PHP , Python
Ruby , Scheme , Tcl

 C , C# , C++
Clojure , Cobol , Delphi
Eiffel , Erlang , Fortran
Groovy , Haskell , Java
JavaScript , Lisp
Objective C , OCaml
Perl , PHP , Python
R , Ruby , Scala
Tcl , Visual Basic

 성능

 MySQL < MSSQL < Oracle

 장점

1. 기업을 겨냥한 폐쇄 소스

2. ACID를 완벽하게 준수하는 엔진 사용

3. 트랜잭션 및 절차에 대한 높은 수준의 제어

1. 다양한 엔진 및 인터페이스와 호환 가능

2. 간단한 설계

3. 오픈소스이다.

4. 가장 보편적인 데이터베이스 도구로서 온라인 지원이 쉬움

1. 폐쇄 소스

2. 테이블 및 행 잠금을 제공

3. 테이블 스페이스, 동의어 및 패키지와 같은 명령을 사용하여 광범위하고 유연한 스토리지 사용자 정의

4. 광범위한 백업 메커니즘

5. 테이블 및 데이터베이스를 대규모로 관리하도록 설계

6. 사용자가 많아서 신뢰성이 높다.

 단점

 중소규모
ex) 중소기업

 중소규모
ex) 쇼핑몰, 중소기업

 대규모
ex) 대기업

 사용해야

 경우

1. .NET 개발환경에서 작업하는 경우

2. 대기업 / 기업 환경에 서비스를 제공

3. 애플리케이션 개발보다는 워크로드를 처리

4. 데이터베이스를 세부적으로 제어

1. 소규모 운영

2. 읽기 전용 웹 앱 또는 웹 사이트

3. 높은 수준의 복제 기능

4. 간단한 쿼리만 사용하며 동시성이 낮음

1. 트랜잭션 제어 측면에서 유연성이 필요

2. 대규모 데이터베이스 사

3. 높은 수준의 확장성

4. 데이터베이스가 플랫폼에 독립적


Microsoft access


종류 

MS access 

장점 

1. DB관리가 쉽다.

2. 엑셀과 호환이 잘된다.

3. PC 한대로 구축 가능하다.

4. 다른 포맷으로 변환이 쉽다(다른이름으로 저장 기능)

단점 

1. 윈도우에서만 사용 가능하다.

2. DB파일 크기가 최대 2g로 제한된다.

3. 복잡한 query문을 소화하지 못한다.

4. 여러명이 동시에 접속할 수 없다.



* 트랜잭션 : 데이터를 다루는 작업의 단위이다.

* ACID(원자성, 일관성, 고립성, 지속성) : 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 가리키는 약어이다.

'Web development > DB' 카테고리의 다른 글

[MySQL] DB 데이터 이전 및 백업  (1) 2017.12.09

+ Recent posts