### 기본적인 DB 연결 예제
아래는 nodeJS에서 mysql 모듈을 사용하여 my_database 데이터베이스의 my_table 테이블에서 모든 데이터를 가져오는 예제입니다.
아주 기본적인 database 연결 예제입니다.
예제는 nodeJS지만 얘기하려는 내용은 대부분의 프로그래밍 언어에 포함됩니다.
```javascript
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password',
database: 'my_database'
});
connection.connect();
connection.query('SELECT * FROM my_table', (error, results, fields) => {
if (error) throw error;
console.log('The result is: ', results);
});
```
실무에 적용한다고 했을 때 이 간단한 예제 안에서 주의해야 할 사항이 3가지 있습니다.
.
.
.
아시겠나요??
.
.
.
어느정도 경험 많은 개발자분들은 느낌이 딱 오시겠지만 경험이 적은 개발자분들은 인터넷에서 찾은 예제코드를 그대로 사용하는 경우가 있기 때문에 그 주위사항을 정리하였습니다.
### 하드코딩된 연결 정보
호스트명, 계정 정보, 데이터베이스명 등이 코드에 직접 하드코딩 되어 있습니다.
이러한 정보는 코드를 Git 같은 소스 코드 관리 시스템에 저장할 때 같이 저장되므로, 누군가 이 저장소를 복제하면 연결 정보를 쉽게 얻을 수 있습니다.
보통 setting파일을 따로 만들어 소스 코드 관린 시스템에 저장이 되지 않도록 ignore 처리를 해놓습니다.
### DB root 계정 사용
DB에 연결할 때 root 계정을 사용하고 있습니다. root 사용하면 참 편하죠. 하지만 DB에 접근할 수 있는 모든 권한을 가지기 때문에 유출되면 돌이킬 수 없게 됩니다.
최소한의 권한만 가진 사용자를 생성하여 DB에 접근하도록 설정하는 것이 좋습니다.
### DB 연결 종료 코드 누락
DB 연결을 종료하는 코드가 없습니다.
생성된 connectioni의 사용이 완료되면 connection.end()를 호출하여 자원을 돌려줘야 합니다.
그렇지 않으면 DB와 연결이 지속되어 불필요한 자원을 소비하고 나중에는 서버 자원 부족으로 장애가 발생할 수 있습니다.
### 기타
위 3가지는 정말 중요하다 생각되는 내용이고 아래 내용은 중요할 수도 있고 중요하지 않을 수도 있어서 기타로 뺐습니다.
#### DB 연결에 대한 예외처리
DB를 사용한다는 얘기는 내부망이든 외부망이든 네트워크로 묶여 있다는 얘기이고, 네트워크는 언제든 끊길 수 있습니다. 따라서 예외처리를 하는 것이 좋습니다.
예)
```
try {
connection.connect();
console.log('Connected!');
} catch (err) {
console.error('Error connecting to database:', err);
}
```