React

[React/MySQL] react 에서 MySQL 사용하기 - 떽떽대는 개발공부

떽이 2021. 1. 29. 18:38

 

 

react 에서 db 연결을 하기 위해 mysql 을 다운 받았다. 

npm i mysql

 

그리고 server 디렉토리에 config 디렉토리를 추가하고 db.js를 생성해준다.

server/config/db.js

const mysql = require('mysql');

const db = mysql.createPool({
    host : 'localhost',
    user : 'test',
    password : '1111',
    database : 'board_sample'
});

module.exports = db;

 

이제 사용자가 요청하면 해당 db 를 아래와 같은 형식으로 전달할 수 있다.

server/routes/index.js

const express = require('express');
const router = express();
const db = require('../config/db')

// http://localhost:4000/ 으로 접속 시 응답메시지 출력
router.get('/test', (req,res) => {
    db.query('SELECT * FROM table1', (err, data) => {
        if(!err) res.send({ products : data});
        else res.send(err);
    })
})

module.exports = router;

 

mysql 을 db로 사용하기 위해서 아래와 같이 Legacy 설정 먼저 변경 해준다.

MySQL Installer 에서 설정을 변경할 수 있다.

1. MySQL Installer 실행

2. MySQL Server Reconfigure 클릭

3. Legacy로 변경

이렇게 하고 비밀번호를 한번 더 입력하고 재설치를 해주면 된다.

 

이제 cmd 창을 열고 아래와 같이 mysql 의 유저를 생성하고 권한을 부여하면 된다.

1. cmd 창 open

2. mysql 사용 (root 의 비밀번호 입력)

mysql -u root -p

 

3. db 선택

use <사용할 db>;

 

4. 추가할 사용자 및 비밀번호 등록

alter user 'id'@'%' identified with mysql_native_password by 'password';

 

5. 등록한 사용자에 권한 주기

grant all on *.* to 'id'@'%';

 

이제 MySQL Workbench 에서 아래와 같이 db설정, 테이블 추가를 해주면 된다.

난 전에 올리던 예제에서 확인만 해보도록 하겠다.

src/App.js

import React, { useState, useEffect }  from 'react';
import { BrowserRouter as Router, Switch, Route } from 'react-router-dom';
import '@css/style.css';

import BoardList from '@components/BoardList';
import BoardNew from '@components/BoardNew';
import BoardContent from '@components/BoardContent';
import Footer from '@components/Footer';
import axios from 'axios';

function App () {

  //const [test, setTest] = useState('')

 // render 후 바로 실행
  useEffect(() => {
    axios.get('/api/test')
      .then(res => console.log(res))
  })

  return (
    <div className="App">
      <Router>
        <div>
          <Switch>
            <Route path='/' component={BoardList} exact />
            <Route path='/BoardNew' component={BoardNew} exact />
            <Route path='/BoardContent' component={BoardContent} exact />
          </Switch>
        </div>
        <div>
          <Footer />
        </div>
      </Router>
    </div>
  )
}

export default App;

 

그리고 서버 실행, npm 실행 해보면 아래와 같이 브라우저에 콘솔로 결과를 확인할 수 있다.