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 서비스를 종료했다가 권한정보없이 로그인할 수 있도록 한 후 비밀번호를 바꿔주면 된다.
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
에러가 발생하면 아래를 참고
권한 부여해준 root말고 새로운 user를 만드는 것도 좋은 방법이다.
https://orange056.tistory.com/98
access denied
https://changun516.tistory.com/55
성공시
'공부 > JUN STUDY' 카테고리의 다른 글
Fuzzotron 을 이용한 NASA cFS(Core Flight System) 퍼징하기 (0) | 2024.05.12 |
---|---|
ubutnu에서 firebase 세팅법 (간단한 백엔드 웹서버 만들기) (0) | 2024.01.05 |
Wireguard VPN android 라이브러리 github 예제 (Anton2319) 분석 in Windows (1) | 2024.01.02 |
해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문 (0) | 2023.07.13 |
ASCII 코드란? (컴퓨터가 표현할 수 없는 정보를 컴퓨터에 저장하는 방법) (0) | 2022.10.22 |