공부/JUN STUDY

MYSQL 설치 및 사용법 / 기본 CRUD 세팅 (ubuntu, node.js 이용)

JUNFUTURE 2024. 1. 3. 11:46

ubuntu에서 node.js를 이용해 개발 중

DB 기능이 빠르게 필요할때 설치하고 사용하는 방법을 적어보았다.

1. mysql 설치

sudo apt-get install mysql-server

2. mysql 접속

sudo /usr/bin/mysql -u root -p

 

사용자 정보 확인

SELECT User, Host, authentication_string FROM mysql.user;

3. 데이터 베이스 생성 및 확인

CREATE DATABASE securea_wallpad_service;
SHOW DATABASES;

4. 테이블 생성 및 확인

CREATE TABLE user (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    password VARCHAR(255) NOT NULL,
    phone_number VARCHAR(15),
    building_hash VARCHAR(255) NOT NULL,
    unit_number VARCHAR(255),
    peerId VARCHAR(255),
    is_authenticated BOOLEAN NOT NULL DEFAULT FALSE
);
SHOW TABLES;

5. 예시 데이터 추가

INSERT INTO user (name, password, phone_number, building_hash, unit_number, peerId, is_authenticated)
VALUES
    ('John Doe', 'password123', '123-456-7890', 'hash1', 'unit1', 'peerId1', TRUE),
    ('Jane Smith', 'pass456', '987-654-3210', 'hash2', 'unit2', 'peerId2', FALSE),
    ('Bob Johnson', 'testpass', '555-123-4567', 'hash3', 'unit3', 'peerId3', TRUE);

6. 테이블 안에 있는 데이터 확인하기

SELECT * FROM user;

 

참고) node.js 에서 만든 DB 접근하기

import * as mysql from 'mysql2';

// MySQL 연결 정보
const connection = mysql.createConnection({
  host: '127.0.0.1',  // 호스트 주소
  user: 'root',  // MySQL 계정 사용자명
  password: '1234',  // MySQL 계정 비밀번호
  database: 'securea_wallpad_service'  // 사용할 데이터베이스 이름
});

// MySQL 연결
connection.connect((err) => {
  if (err) {
    console.error('MySQL 연결 오류: ' + err.stack);
    return;
  }

  console.log('MySQL 연결 ID: ' + connection.threadId);
});

// SELECT 쿼리 실행 예시
connection.query('SELECT * FROM user', (error, results, fields) => {
  if (error) throw error;

  // 쿼리 결과 출력
  console.log('테이블 내용:', results);
});

// MySQL 연결 종료
connection.end((err) => {
  if (err) {
    console.error('MySQL 연결 종료 오류: ' + err.stack);
    return;
  }

  console.log('MySQL 연결 종료');
});

 

 

연결종료 오류가 날경우 아래와 같이 해결

mysql을 처음 만들고 패스워드가 초기화 되지 않으면 접속을 할 수가 없다.

ubuntu@ip-10-0-1-50:~/jun/securea_server/microservice$ sudo node dbcommunicationtest.js 
MySQL 연결 종료 오류: Error: Access denied for user 'root'@'localhost'
    at Packet.asError (/home/ubuntu/jun/securea_server/microservice/node_modules/mysql2/lib/packets/packet.js:728:17)
    at ClientHandshake.execute (/home/ubuntu/jun/securea_server/microservice/node_modules/mysql2/lib/commands/command.js:29:26)
    at Connection.handlePacket (/home/ubuntu/jun/securea_server/microservice/node_modules/mysql2/lib/connection.js:478:34)
    at PacketParser.onPacket (/home/ubuntu/jun/securea_server/microservice/node_modules/mysql2/lib/connection.js:97:12)
    at PacketParser.executeStart (/home/ubuntu/jun/securea_server/microservice/node_modules/mysql2/lib/packet_parser.js:75:16)
    at Socket.<anonymous> (/home/ubuntu/jun/securea_server/microservice/node_modules/mysql2/lib/connection.js:104:25)
    at Socket.emit (node:events:514:28)
    at addChunk (node:internal/streams/readable:324:12)
    at readableAddChunk (node:internal/streams/readable:297:9)
    at Readable.push (node:internal/streams/readable:234:10)

 

이에 사용자의 비밀번호를 아래와 같이 다시 세팅해주면 된다.

// mysql 5.x 
mysql> update user set password=password('1234') where user='root'; 
mysql> update user set authentication_string=password('1234') where user='root'; 

// mysql 8.x
mysql> alter user 'root'@'localhost' identified with mysql_native_password by '1234;

 

비밀번호로 접속이 안되는 경우

mysql -u root -p mysql

위 명령어로 접속이 안되는 경우 아래의 링크를 참고하면 된다.
아래 링크를 참고하여, mysql 서비스를 종료했다가 권한정보없이 로그인할 수 있도록 한 후 비밀번호를 바꿔주면 된다.

 

https://sinbot.tistory.com/3

 

MySql: Access denied for user 'root'@'localhost'

이제 막 첫 서버 접속을 시작하려는데~~~이놈의 망할 denied 가 뜬다. 스트레스!!! MySql: Access denied for user 'root'@'localhost' MySql: Access denied for user 'root'@'localhost' MySql: Access denied for user 'root'@'localhost' MySq

sinbot.tistory.com

 

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

에러가 발생하면 아래를 참고

https://gre-eny.tistory.com/3

 

[MySQL] ERROR 2002 (HY000) Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

[실행환경] Windows 10 Ubuntu 18.04 LTS mysql ver14.14 Distrib 5.7.31 MySQL데몬 실행 에러 ubuntu에서 mysql을 실행 시킬 때 /etc/init.d/mysql start 혹은 mysql -u root -p 등을 사용할 것이다. 만약 Windows에서도 mysql을 사용

gre-eny.tistory.com

권한 부여해준 root말고 새로운 user를 만드는 것도 좋은 방법이다.

https://orange056.tistory.com/98

 

[MySQL] access denied for user 오류 해결, 외부접속 허용

1. mysql 접속 우선 mysql에 연결해준다 명령어는 mysql -uroot -p 띄어쓰기에 주의해준다(그래서 웬만하면 복붙함) 그리고 비밀번호를 입력해준다 이비밀번호는 mysql을 처음 설치할때 지정해준 비밀번

orange056.tistory.com

 

access denied 

https://changun516.tistory.com/55

 

[Mysql 2059] 로그인 오류 Access denied for user '' @ ''(using password: YES)

오류 해결 Mysql을 Connet하는 경우 아래와 같은 Error 메세지를 만나는 경우가 종종 있습니다. 로그인이 불가하다는건데 문제는 다음과 같습니다. 0. 로그인 정보가 잘못된 경우. 1. 외부 접속을 열어

changun516.tistory.com

 

성공시