just do it

node.js-mysql(1) 본문

언어&프레임워크/Node.js

node.js-mysql(1)

밍풀 2023. 1. 27. 00:59

실습환경 갖추기

mysql에 실습데이터 입력하고

main.js가 위치하는 곳에서 npm install 해주기 => node_modules파일 생성됨

npm install 은 실행할 파일이 있는 곳에서 설치해주어야 한다. 다른 파일에서 실행시킬 main.js 가 있다면 그곳에서도 npm install 따로.. 필요한 라이브러리 불러오는 거니깡

 

json에서 dependencies를 살피고 필요한 sanitize-html을 위해 npm을 설치해준것

 

node.js mysql 모듈의 기본사용법(node.js에서 mysql동작시키기)

node.js 기본모듈중에 mysql 제어하는거 없음

npm 이용해서 mysql 설치하기

npm install mysql  을 콘솔창에 입력하기

 

npm install --save mysql

혹은 npm install -S mysql 는  mysql 을 dependencies에 추가해주는것도 해줌

 

아래 코드 입력한 mysql.js 만들고 node로 실행시키면 생성한 데이터를 개체형태로 보여줌

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var mysql      = require('mysql');//mysql모듈을 사용할게
// 비밀번호는 별도의 파일로 분리해서 버전관리에 포함시키지 않아야 합니다. 
var connection = mysql.createConnection({
  host     : '127.0.0.1',//데이터베이스서버가 어떤컴퓨터에 있는가 노드와 my의 서버가 같은컴퓨터에 있으니 노드와같은주소
  user     : 'nodejs',
  password : '111111',
  database : 'open'
});
  
connection.connect();//만들어진 객체 connection에 connect라는 메소드를 호출하면 접속이 될거야
  
 
//접속이 끝나면 이 메소드 호출해서 sql문을 첫인자로주고 두번째인자로 콜백주면 첫인자인 sql이 서버에 전송되서 실행끝내고 응답 
//으로 저 콜백함수 실행될거임 
connection.query('SELECT * FROM topic'function (error, results, fields) {
    if (error) {
        console.log(error);
    }
    console.log(results);//이거 실행하면 토픽에저장된 데이터가 객체형태로 반환됨
});
  
connection.end();
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var mysql      = require('mysql');
// 비밀번호는 별도의 파일로 분리해서 버전관리에 포함시키지 않아야 합니다. 
var connection = mysql.createConnection({
  host     : 'localhost',
  user     : 'root',
  password : '111111',
  database : 'opentutorials'
});
  
connection.connect();
  
connection.query('SELECT * FROM topic'function (error, results, fields) {
    if (error) {
        console.log(error);
    }
    console.log(results);
});
  
connection.end();
cs

 

그런데 위와같은 에러가 떳고...... localhost대신에 127.0.0.1 로 대체 해주었더니

이번엔 ACCESS DENIED ERROR가 뜸

 

selct * from user =>현재 들어와있는 데이터베이스에 있는 유저테이블을 찾음

select Host, User from mysql.user  = > 현재 들어와있는 mysql 데이터베이스에 있는 유저테이블을 찾음, 여기서 host, user 컬럼만 가져오면 위와같이 나옴 

 

위와같은 사용자 나옴

 

sql 새로운 계정만들기 (nodejs 이름으로)

1. 유저생성

mysql> create user 'nodejs' @ '%' IDENTIFIED BY '111111';

; 어디에서 접속하던 아이디가 nodejs면 이 사용자에 해당된단 뜻, 비번은 111111이다 

%가 어디에서든을 의미, 따라서 %대신 localhost 입력할수도 있는거고 

 

위와같이 nodejs 가 추가됨을 볼 수 있다

 

2. 생성된 유저에게 권한부여

1번까지하면 nodejs는 권한 없는 상태임, 이제 할수있는 일을 줌

mysql> GRANT ALL PRIVILEGES ON open.* TO 'nodejs'@'%';

 'nodejs'@'%' 사용자에게 open데이터베이스에있는 모든테이블에 대한 모든 권한을 주겠다.

여러가지 줄수있는 권한들

3. 권한을 반영

FLUSH PRIVILEGES ; 로 실제로 데이터베이스에 적용함

 

.

.

.

드디어 제대로 나옴을 확인 ..... !! !

data가 객체로 나옴을 확인할 수 있다. 

host 자리에 localhost 입력하면 여전히 에러가난다.. 127.0.0.1 로 바꾸어야 함