node.js 작업 환경에 mysql 서버에 명령어 요청을 보내고 응답을 주고 받는 모듈을 연동해야 한다. -> mysql이라는 외부 라이브러리를 npm으로 설치
npm install --save mysql
(save 옵션은 저번 packge.json에 있던 dependencies에 설치한 모듈 정보가 자동으로 저장해줘서 다른 작업 환경에서도 npm이 관리를 할 수 있게 해줌)
var mysql = require('mysql');
// 비밀번호는 별도의 파일로 분리해서 버전관리에 포함시키지 않아야 합니다.
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '111111',
database : 'opentutorials'
});
connection.connect();
creteConnection이라는 메소드를 호출하여 mysql 서버 접속에 필요한 정보들을 입력한다.
host - mysql 서버가 존재하는 주소,컴퓨터 (일단 같은 컴퓨터에서 작업하니 localhost)
user,password - 사용자명, 비번
database - 데이터베이스 서버안에 사용할 데이터베이스명
createConnetion에서 리턴한 connection 객체의 connect함수를 실행하면 위의 정보에 해당하는 데이터베이스를 node에서 사용할 수 있는 것 같다.
connection.query('SELECT * FROM topic', function (error, results, fields) {
if (error) {
console.log(error);
}
console.log(results);
});
connection.end();
또한 query 메소드로 데이터베이스에 쿼리를 보낼 수 있다. 쿼리가 보내고 응답이 오면 뒤에 콜백 함수를 실행하는데 error, results에 대해 각각을 출력하는 코드이다. fileds는 뭐지
end()로 데이터베이스 서버에서 나온다. mysql monitor에서 exit하는 것과 같다.
nodejs가 mysql 서버의 클라이언트로 동작하게 하는 것
새로운 유저를 만든다
CREATE USER 'node.js'@'%' INDENTIFIED BY '123456'
골뱅이 뒤에는 localhost같은 주소를 입력하여 이 주소로 접속했을 때에 사용자가 node.js다 라는 것인데 %는 주소에 상관 없이 이 사용자가 node.js다 라고 해준다. 뒤에는 password
그리고 만든 사용자에게 권한을 줘야한다.
GRANT ALL PRIVILEGES ON opentutorials.* TO 'node.js'@'%';
GRANT - 권한을 준다,
ALL PRIVILEGES - 모든 권한을,
opentutorials - 해당 데이터베이스의,
. - 모든 테이블의,
TO 'node.js'@'%' - 해당 유저 에게
ON .* 라고 하면 모든 데이터베이스의 모든 테이블에 대한 권한이다.
그리고,,,
FLUSH PRIVILEGES;
위 명령어를 쳐줘야 데이터베이스 서버에 반영이 된다.
터미널 작업이 끝났으면 connection의 user를 node.js로 바꿔서 접속하면
opentutorials 데이터베이스에 정상적으로 접속하여 노드에서 작성했던 쿼리문이 잘 실행되는 것을 볼 수 있다.