목표
1. MySQL과 eclipse의 JDBC 연결하기(Pooling 방법)
2. 한명의 IP주소로 여러 사용자가 DB이용할 수 있게 하기
한 사람의 MySQL DB를 여러 사람이 접속하여 사용할 수 있도록 하기 위해
모든 호스트를 허용하는 user를 생성하고
그 user에게 어떤 DB를 사용하게 할지 권한을 부여해야 한다.
MySQL의 Command Line Client에서 아래 명령어를 입력하면
mysql> select host, user from user;
itemfarm의 host가 local만 가능함을 볼 수 있다.
아래 명령어를 통해 모든 host에 접속할 수 있는 itemfarm 계정을 생성해준다.
create user itemfarm@'%' identified by '비번';
('%' 기호가 모든 외부 IP 접근이 가능하다는 뜻)
❗syntax 에러가 많이 났는데 대부분 작은따옴표를 붙였는지 아니였는지 문제였다.
다시 user table를 조회해보면
select host, user from user;
모든 호스트가 접근할 수 있는 itemfarm user가 새로 생김을 볼 수 있다.
아래 명령어를 통해 itemfarm user가 itemfarm 아래 모든 테이블에 접속할 수 있도록 권한을 부여한다.
grant all privileges on itemfarm.* to itemfarm@'%';
위에서 생성한 계정으로 connection을 만들어 접속후 지정한 hostname을 이용해 JDBC에 연결하도록 한다.
우리의 프로젝트는 아파치 서버를 사용하고 있다.
(아파치에서 Connection Pool 방법으로 연결하는 방법 안내 사이트 바로가기)
Connection Pool 방법으로 데이터베이스를 이용하기 위해
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/itemfarm</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
public class MysqlUtil {
//MySQL과 JDBC연결
public static Connection getConnection() {
Connection conn = null;
Context initContext;
try {
initContext = new InitialContext();
Context envContext = (Context)initContext.lookup("java:/comp/env");
DataSource ds = (DataSource)envContext.lookup("jdbc/itemfarm");
conn = ds.getConnection();
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//자원반납
public static void dbDisconnect(ResultSet rs, Statement st, Connection conn) {
try {
if(rs!=null) rs.close();
if(st!=null) st.close();
if(conn!=null) conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
MySQL의 외부 IP 접속 허용하기: https://developer-joe.tistory.com/166
PHP8 이후로 바뀐 권한 허용 SQL문1 : https://dzzienki.tistory.com/22
PHP8 이후로 바뀐 권한 허용 SQL 2: https://javagwanjin.tistory.com/entry/MYSQL-%EC%9C%A0%EC%A0%80%EB%A7%8C%EB%93%A4%EA%B8%B0
아파치와 MySQL 다운 참고 사이트 : https://ondolroom.tistory.com/498