[next.js 개발] How To Connect MySQL And Auth To A Next.js App

How To Connect MySQL And Auth To A Next.js App

Woohyun Jang
 
JavaScript in Plain English
 

Today, we’ll connect our Next.js app to MySQL database and develop an authentication feature.

1. Setup the MySQL database

At first, I’ll prepare MySQL database to connect.

If you already installed that, you can skip this step. Just create a database and table named ‘users’ in MySQL.

Let’s install the ‘mysql’. I used ‘homebrew’ package manager.

$ brew install mysql

It is not necessary to use this method. Depending on the OS or your preference, you can use different styles.

After installation, create a database and ‘users’ table. I used ‘MySQLWorkbench’.

2. Clone the next.js authentication example

If the database is ready, We need a next.js app to connect to the database.

It also has to have some features about authentication. But Developing authentication features from zero bases takes too much effort. It is not this posting’s main purpose.

So we’ll use next.js’s official example named ‘api-routes-apollo-server-and-client-auth’. We can clone that project by ‘npx’ command or ‘yarn’.

Let’s see the SignUp function component in ‘signup.js’ file. It receives email and password from the user and calls ‘handleSubmit’ function when submit.

When the submit event has occurred, the ‘handleSubmit’ function requests ‘signUp’ mutation.

signup.js

If signUp mutation comes, the resolver creates a new user as the user’s password is encrypted in ‘apollo/resolvers’ and ‘lib/user.js’.

Same as this feature, ‘signIn’ and ‘signOut’ features are already made. It also supports session management.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

resolvers.js

3. Connect next server to DB

And now to connect to MySQL, we need to install a connection manager. we used the ‘serverless-mysql’. It’s a wrapper for the ‘mysql’ module. It supports ‘async/await’ and monitoring connections.

$ yarn add serverless-mysql

And create a ‘lib/db.js’ file.

// db.jsimport mysql from 'serverless-mysql';const db = mysql({  config: {    host: process.env.MYSQL_HOST,    port: process.env.MYSQL_PORT,    database: process.env.MYSQL_DATABASE,    user: process.env.MYSQL_USER,    password: process.env.MYSQL_PASSWORD  }});export default async function excuteQuery({ query, values }) {  try {    const results = await db.query(query, values);    await db.end();    return results;  } catch (error) {    return { error };  }}

To run this code, we have to set env variables. If you’ve ever used webpack, It will be familiar.

we can these variables by making ‘next.config.js’ file.

// next.config.js
module.exports = {  env: {    'MYSQL_HOST': '127.0.0.1',    'MYSQL_PORT': '3306',    'MYSQL_DATABASE': {database_name},    'MYSQL_USER': {user_name},    'MYSQL_PASSWORD': {user_password},  }}

Then, check the app is connected to the database. import the ‘excuteQuery’ from db.js and call it in ‘createUser’ function.

lib/user.js

Then enter the ‘http://localhost:3000/signup’. If you write down new user’s email and password and submit, You can see the new user is created in MySQL database.

mysql> SELECT * FROM users;

The ‘signIn’ feature is also not too difficult. we just use ‘SELECT’ query instead of ‘users’ const variable.

Now we can use authentication features successfully.

Github Source Code

 

[출처] https://javascript.plainenglish.io/connect-mysql-and-authentication-on-next-js-761d12340e4f

 

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
27 [wordpress, 워드프레스] 워드프레스로 쉽게 랜딩 페이지 만들기 (feat. 엘리멘터, GeneratePress, Divi) file 졸리운_곰 2024.12.20 545
26 [wordpress, 워드프레스] WordPress 페이지또는 글에 별도 CSS와 JavaScript 추가하기 file 졸리운_곰 2024.12.19 355
25 [wordpress 플러그인] 코스모스팜. 회원관리 1.메뉴에 로그인 넣기 file 졸리운_곰 2024.08.25 513
24 [wordpress 플러그인] WP-Members로 회원제 사이트 만들기 file 졸리운_곰 2024.08.25 750
23 [php worldpress] 워드프레스 새 서버 이전시 페이지 안나오는 문제 : How to Rewrite URLs with mod_rewrite for Apache on Ubuntu 20.04 file 졸리운_곰 2024.08.07 776
22 [php worldpress] PHP query to SQL server database (wordpress) 졸리운_곰 2024.07.28 506
21 [php worldpress] [위 에]wordpress 사용자 암호 화 원리 및 알고리즘 분석 졸리운_곰 2022.04.11 378
20 [wordpress] WPForms 워드프레스 폼빌더 사용법 file 졸리운_곰 2021.04.25 1715
19 [wordpress][워드프레스] 워드프레스에서 wpdb를 사용한 CRUD 작업 예 졸리운_곰 2021.04.15 356
18 워드프레스에서 wpdb를 사용한 CRUD 작업 예 졸리운_곰 2021.01.12 459
17 워드프레스 – CRUD file 졸리운_곰 2021.01.02 503
16 워드프레스 데이터베이스 들여다보기. file 졸리운_곰 2020.08.04 674
15 워드프레스 플러그인과 테마 비교 - 사이트별 플러그인 만들기 졸리운_곰 2020.04.21 501
14 워드프레스에서 js 스크립트 파일과 스타일시트를 올바르게 로드하는 방법 졸리운_곰 2020.04.21 739
13 워드프레스 플러그인 만들기 file 졸리운_곰 2020.04.21 501
12 워드프레스 숏코드: 완벽 가이드 file 졸리운_곰 2020.04.21 513
11 워드프레스 페이지 분석 file 졸리운_곰 2019.11.19 517
10 내가 본 워드프레스 핵심 구조 및 기능 (Wordpress Architecture and Function) file 졸리운_곰 2019.11.19 453
9 Embedding three.js in WordPress 워드프레스에서 three.js 사용 졸리운_곰 2019.11.08 522
8 How to Super Charge your WordPress with Microservices 워드프레스 마이크로서비스 file 졸리운_곰 2019.11.03 375
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED