전편의 글에 이어 구동에 필수적인 부분을 설명하겠습니다.가장 먼저 Athena의 conf폴더에 있는 inter-server.conf, map-server.conf, char-server.conf 파일을 메모장 (또는 기타 편집기)를 이용하여 열어 놓습니다.
주목할 점은 char-server.conf와 map-server.conf의 userid와 passwd와 inter-server.conf의 Global SQL settings의 내용 입니다.
먼저 위의 세개 파일을 열어둡니다.
다음 MySQL Workbench를 실행합니다. 해당 데이터베이스에 연결한 뒤 rag_test 스키마의 main.sql을 이용하여 생성한 테이블 중 login 테이블을 선택합니다. 즉, login 테이블을 수정할 수 있도록 합니다.
즉, login 테이블을 수정할 수 있는 상태로 준비합니다.
아래와 같이 userid와 user_pass를 볼 수 있습니다.
이제 서버 에뮬레이터가 서로 통신을 위한 아이디와 비밀번호를 설정하겠습니다.
주의할 점은 MySQL의 root 비밀번호와 함께 이 아이디와 비밀번호 또한 타인에게 노출되지 않도록 해야합니다.
따라서 기본적으로 설정되어있는 s1, p1은 절대 사용하지 않도록 합니다. (최근의 athena들은 s1/p1을 그대로 사용할 시 작동되지 않습니다.)
MySQL의 userid/user_pass를 반드시 자신만 아는 아이디와 비밀번호로 설정합니다.
수정을 원하는 셀을 더블 클릭하여 수정한 후 반드시 Apply를 눌러줍니다.
변경 내용을 확인한 뒤 Apply를 눌러줍니다.
올바로 적용된 후 Finish를 선택하여 마무리 합니다.
제대로 적용되었다면 char-server.conf와 map-server.conf의 userid/passwd를 위에서 수정한 값과 같은 값으로 수정하고 저장합니다.
위의 그림과 같이 세 곳의 값을 반드시 같게 설정해줍니다.
만약 일치하지 않도록 수정하면 다음과 같은 오류 메시지를 출력하면서 연결되지 않습니다.
에러 메시지를 잘 보면 아시겠지만 userid/uaserpw가 같지 않는 것 + 서버 통신을 위한 계정의 성별을 S로 설정하지 않으면 위와 같은 오류메시지를 출력할 수 있는 것을 알 수 있습니다.
이로써 데이터베이스에서 필요한 부분은 끝이 났습니다.
하지만 한가지 과정이 더 남아 있습니다. Athena가 구동될 때 여러가지 정보를 데이터베이스에서 가져오거나 저장하게 되는데
이 데이터베이스가 어디있는지 아직 정확히 알지 못합니다. 따라서 Athena에 어디의 데이터베이스에 접속해야하는지 명시해야 합니다.
또한 데이터베이스 쪽 (MySQL)에서는 데이터베이스에 접근하는 연결이 내가 허용한 연결인지 확인해야하기 때문에 이러한 것을 해결하는 과정이 남아있습니다.
가장 먼저 MySQL Workbench를 실행하여 root 사용자로 해당 데이터베이스에 연결합니다.
그 다음 Athena가 연결할 사용자를 생성해야 합니다.
왼쪽의 Users and Privileges를 선택한 후 중앙에 나오는 창에서 Add Account(새로운 사용자 생성)를 선택합니다.
다음 바로 오른쪽에 나오는 Login Name/Limit Connectivity to Hosts Matching/Password/Confirm Password를 적절히 채우고 반드시 Apply를 클릭하여 적용합니다.
Login Name/Password는 타인이 알 수 없도록 주의하며 Limit Connectivity to Hosts Matching에는
자신의 컴퓨터를 지칭하는 localhost 또는 127.0.0.1을 넣습니다. (데이터베이스와 Athena가 다른 곳에서 구축되어 있다면 그에 알맞는 아이피 주소를 넣습니다.)
Athena는 이 사용자 계정을 이용하여 이 데이터베이스에 연결합니다. 뿐만 아니라 앞에서 Athena는
이 데이터베이스에 값을 조회하고 추가/수정을 할 수 있어야 하므로 새로 생성한 사용자의 권한을 설정해야합니다.
다음과 같이 Administrative Roles 탭을 선택한 뒤 계정의 역할 Role과 권한 plivilige을 설정해야 합니다.
읽어보고 알맞는 설정을 하면 되지만 잘 모르겠다면 파란 V표시가 있는 DBA를 선택하여 모든 권한을 적용합니다.
그 다음 반드시 Apply를 선택하여 적용해 줍니다. (이렇게 많은 권한을 부여하므로 ID/Password 보안에 신경씁니다.)
이 가이드의 경우에는 Login Name : testUserID/Password : testUserPW로 설정하였습니다.
이렇게 Athena가 접속할 수 있는 새로운 사용자를 추가하였다면 이 사용자를 이용하여 Athena가 접속해야 하므로 이전에 보았던 inter-server.conf에 이 사용자를 추가합니다.
Athena에서 데이터베이스에 연결하기 위한 설정
이제 MySQL에서는 Athena 구동에 필요한 데이터베이스들과 최소한의 데이터베이스 내용, 그리고 연결을 위한 계정까지 모두 준비되었습니다.
마지막으로 Athena에서 이 데이터베이스에 연결하기 위한 설정입니다.
Athena 안의 conf/inter-server.conf 파일을 열고 Global SQL settings를 수정합니다.
이 부분은 Athena가 접속할 데이터베이스 위치와 연결할 계정, 목적에 맞는 데이터베이스 스키마가 설정되는 곳입니다.
먼저 새로 추가한 사용자인 testUserID/testUserPW를 inter-server.conf의 Global SQL settings의 4 곳의 username과 password에 '똑같이' 적어줍니다. ※붉은색 상자와 화살표
다음 파란색 상자인 rag_test 스키마 이름을 inter-server.conf의 database에 적어줍니다. 단, MySQL Log SQL Database는 제외. ※파란색 상자와 화살표
마지막으로 초록색 상자인 rag_test_log 스키마 이름을 MySQL Log SQL Database에 적어줍니다. 이 부분은 헷갈릴 수 있으므로 천천히 잘 확인하면서 설정하도록 합니다.
-요약
추가한 사용자 아이디/비밀번호를 inter-server.conf에 4곳에 똑같이 적어줍니다.
메인 데이터베이스 스키마 이름을 3곳에 똑같이 적어줍니다.
로그 데이터베이스 스키마 이름을 1곳에 똑같이 적어줍니다.
이로써 구동을 위한 최소한의 설정이 끝났습니다. (SQL 버전의 경우)
결과
실제로 가이드에 설명된 것 이외에는 아무것도 하지 않은 것을 이용하여 구동한 것입니다.
아무런 오류없이 잘 구동되었으며 Hercules팀의 5월 8일의 Athena를 Git에서 다운받은 것으로 실행하였습니다.
공유기를 사용하는 환경이지만 login/char/map_conf.conf에서 아이피/포트 수정없이 실행하였습니다. 딱 지금까지의 가이드를 충실히 따라서,,,
기타
Athena가 DB에 접속하기 위한 사용자를 추가할 때 Limit Connectivity to Hosts Matching에서 자신의 컴퓨터 주소인 localhost 또는 127.0.0.1을 설정하였는데,
이 부분의 이름에서 알 수 있듯 설정한 조건에 맞는 연결을 제한하는 것입니다. 즉, 자신의 컴퓨터 주소를 적어준다면 자신의 컴퓨터에서만 연결할 수 있는 것입니다.
따라서 자신의 환경에 맞게 바꾸어 주어도 되며, 이에 따라 inter-server.conf에서 각각의 아이피 주소(기본적으로 127.0.0.1로 되어있음)/포트(기본적으로 3306으로 되어있음)를 바꾸어주면 됩니다.
마지막으로 여기까지의 가이드는 구동의 최소한의 설정으로 바로 runserver-sql.bat 또는 run-server.bat으로 서버구동할 때 잘 구동 될 수도 있습니다.
이 가이드를 보시는 분들 중 char/login/map_conf.conf 아이피를 수정해야한다는 점을 알고 있는 분이 있을 수 있는데
기본적으로 아이피에 대한 명시적인 설정이 없으면 자신의 컴퓨터로 접속하게 되어있으므로 자신의 컴퓨터에 mpa/login/char 서버가 모두 실행된다면 서버 구동에는 문제가 없습니다.
문제는... Athena에 실제로 접속할 때 잘 되지 않을 수 있습니다. 이에 대한 자세한 설명은 허용되지 않을 수 있으므로 생략하며 char/login/map_conf.conf의 아이피 수정은 다음 가이드에 설명하겠습니다.
이 가이드를 마치면서 예로 설정했던 데이터베이스 및 많은 ID/PW는 모두 삭제하였습니다.
또한 결과에 보여지는 아이피는 내부 공유기 아이피이므로 혹시라도 잘 모르시는 분들의 무리한 접속 시도는 하지 않으시는 것이 좋을 것 같습니다.