본문 바로가기

Programming181

[Database] MySql User 비밀번호 확인 변경 하는 방법 User 비밀번호 확인 & 변경 ① mysql 실행 $ sudo systemctl start mysql // root 계정으로 접속 $ sudo -u root -p ② mysql DATABASE 선택 mysql> use mysql; ③ User 현재 암호 확인 및 변경 암호화된 비밀번호가 출력된다. 암호화된 string이 출력되기 때문에지금 어떤 비밀번호인지 확인은 불가능하다. 하지만 DB상 암호화된 비밀번호라도 노출되면 md5(), crypt() 함수로 간단하게 복호화가 가능하기 때문에 비밀번호가 노출되면 보안의 생명은 끝이다. mysql> select user, authentication_string from user; 사용자 정보를 변경할 수 있는 root 계정에서 진행해야 한다. mysql> AL.. 2022. 5. 30.
[Database] MySQL 새로운 유저 추가하는 방법 MySQL 새로운 User 추가 ① MySQL 실행 $ sudo systemctl start mysql $ mysql -u root -p ② 현재 등록된 User 확인 // 기본 데이터베이스 선택 $ use mysql // user 확인 $ SELECT user FROM user; ③ 신규 User 생성 원격에서 접속가능한 User를 생성하려면 localhost를 IP로 변경해주면 됨 mysql> CREATE USER 'NEW_USER'@'localhost' IDENTIFIED BY 'password'; mysql> SELECT user FROM user; 만약 위 과정에서 ERROR 1819 (HY000): Your password does not satisfy the current policy req.. 2022. 5. 30.
[Database] Schema Query Design 관계형 데이터베이스 설계 방법 스키마(Schema)란? 스키마란 데이터베이스에서 데이터가 쉉되는 방식과 서로 다른 엔티티 간 관계에 대한 설명이다. 데이터베이스의 청사진이라고 할 수 있다. 데이터베이스를 구성하는 데이터 객체, 객체의 성질, 관계, 제약조건에 대한 정의를 총칭하는 것이다. 데이터베이스 관리 시스템의 특성과 구현 환경을 고려한 데이터 구조다. 스키마는 외부 스키마, 개념 스키마, 내부 스키마의 3단계 논리적인 구조를 가진다. ① 외부 스키마 프로그래머나 사용자의 입장에서 본 데이터베이스의 모습을 나타낸 것이다. 특정 개인이나 특정 응용 프로그램에 한정된 논리적 데이터 구조다. 일반적으로 View를 통해 데이터베이스 내용 중 사용자가 필요한 정보만 볼 수 있게 구현한다. ② 개념 스키마 모든 응용 프로그램과 사용자들이 필.. 2022. 5. 30.
[Database] Ubuntu 20.04 LTS MySQL 설치하기 Ubuntu MySQL Install ① MySQL 설치 $ sudo apt-get update $ sudo apt-get install mysql-server ② MySQL 실행 // MySQL 버전 확인 $ mysql --version // MySQL 실행 $ sudo systemctl start mysql ③ MySQL 접속 MySQL 설치가 완료되면 초기 비밀번호 셋팅이 필요하다. 루트 계정 암호를 지정하고 테스트 유저 삭제 등에 대한 옵션을 선택한다. // MySQL 보안 설정 $ sudo mysql_secure_installation // root 계정으로 최초 접속 $ sudo mysql -u root -p Enter password: "루트 비밀번호" $ mysql -u root -p ④ .. 2022. 5. 30.
[Database] SQL(구조화 쿼리) vs NoSQL(비구조화 쿼리) 차이점 What is the diffrence between SQL and NoSQL? SQL vs NoSQL 개념? 데이터베이스는 크게 관계형 데이터베이스와 비관계형 데이터베이스로 구분된다. 관계형 데이터베이스는 SQL을 기반으로 작성되고, 비관계형 데이터베이스는 NoSQL를 기반으로 한다. ① SQL 관계형 데이터베이스에서는 테이블의 구조, 데이터 타입등을 사전에 정의한다. 데이터를 구조화 시키기 위함이다. 테이블에 정의된 스키마에 유효한 데이터만 삽입이 가능하다. 관계형 데이터베이스는 행과 열로 구성된 테이블을 생성하고 열에는 속성에 대한 정보를, 행에는 열의 데이터에 맞는 데이터를 저장하게 된다. 구조화된 테이블을 통해 데이터를 저장하기 때문에 사용할 때 수월하게 사용이 가능하다. SQL을 활용해 필요한.. 2022. 5. 30.
[Database] 트랜잭션이란? (ACID 데이터베이스 속성) 트랜잭션(Transaction)이란? 트랜잭션은 데이터베이스를 구성하는데 아주 중요한 개념이다. 따라서 백엔드 개발자로 취업을 할때 면접 질문에 자주 등장하기도 하고, 실제 업무를 할 때도 반드시 알고 있어야 하는 개념이다. 트랜잭션이란 여러개의 작업을 하나로 묶은 일련의 실행 유닛이다. 각 트랜잭션들은 특정 작업으로 지가해서 연결된 모든 작업을 완료해야 정상적으로 종료되게 된다. 만약 트랜잭션에 속한 여러 작업 중 하나의 작업이라도 실패하는 경우 모든 트랜잭션이 실패한 것으로 간주된다. 데이터베이스에서 트랜잭션은 한 개 이상의 데이터베이스를 조작하는 논리적인 연산의 집합이 된다. 하나 이상의 SQL문을 포함하게 되고, 분해할 수 없는 최소 단위기 때문에 일반적으로 회복 작업의 기준 단위가 되기도 한다... 2022. 5. 30.
[Database] SQL이란? SQL이란? SQL(Structured Query Language)는 구조화된 Query언어다. Query언어란 직연하자면 질의문을 의미한다. 구글이나 네이버에서 검색을 치는 행위가 query문이다. 구글이나 네이버 데이터베이스에 저장되어 있는 정보를 필터링하기 위한 도구가 query문이다. SQL이란 In-Memory가 아닌 데이터베이스용 프로그래밍 언어로 DB내 저장되어 있는 필요한 정보만 출력할 수 있도록 도와주는 도구다. 주로 관계형 데이터베이스(RDBMS)가 사용됨. SQL문을 데이터베이스에서 사용하기 위해서는 데이터의 구조가 고정되어 있어야 한다. 데이터베이스는 크게 두가지 종류로 구분된다. 먼저 SQL을 사용할 수 있는 데이터베이스와 데이터의 구조가 고정되어 있지 않은 NoSQL 데이터베이스.. 2022. 5. 30.
[Server] express req, res 속성, 메서드 종류 express req, res express에서의 req, res 객체는 http 모듈의 req, res 객체를 확장한 것이다. 따라서 기존 http 모듈의 메소드를 그대로 사용할 수 있고 express에서 추가된 메서드나 속성을 사용할 수도 있다. Node.js의 http 모듈에서 사용했던 res.write, res.writeHead, res.end 메서드들을 그대로 사용할 수도 있고, res.send, res.sendFile 메서드를 사용할 수 있다. express의 req, res 객체는 다양한 속성을 가지고 있다. 가장 많이 쓰이는 속성과 메서드들은 다음과 같다. 만약 프로젝트를 진행하면서 더 많은 속성과 메서드가 필요하다면 공식문서를 참조해야 한다. 메서드 체이닝 req, res 객체의 메서드는.. 2022. 5. 27.
[Server] express Router 분리 사용법 express Router express 프레임워크를 사용하는 가장 큰 이유 중 하나가 깔끔한 Router 때문이다. express에서 라우터를 사용하기 위해서는 express 인스턴스에 HTTP 메소드를 호출하거나 path를 첫번째 인자로 지정해주면 된다. app.get('/router', (req,res)=>{ console.log("기본적인 라우터"); }) 하지만 모든 라우팅을 이런 방식을 코드를 작성하는 경우 app.js가 불필요하게 길어지게 된다. 이런 이유로 routes 폴더를 만들고 라우터를 분리하기 시작한다. 라우터 분리 라우터 분리를 위해 먼저 routes 디렉토리를 생성하고 index.js, user.js 파일을 생성한다. $ mkdir routes $ touch routes/inde.. 2022. 5. 27.
[Server] express 서버 시작하는 방법, 미들웨어 종류 Express Node.js에서도 HTTP 요청과 응답을 처리할 수 있는 HTTP 모듈을 제공한다. 그럼에도 불구하고 코드가 보기 힘들고, 확장성이 떨어지기 때문에 npm에서 서버를 제작하는 웹 서버 프레임워크 Express가 도입되었다. Node.js 환경에서 웹 서버를 생산하는 프레임워크는 Koa, hapi 등이 있지만 express 사용이 압도적이다. Express 시작하기 프로젝트를 시작할 디렉토리를 생성하고 express를 설치해준다. 코드가 변경될 때마다 자동으로 서버를 재실행 해주는 nodemon도 함께 설치해준다. $ mkdir test_server $ cd test_server $ npm i express $ npm i -D nodemon 또는 애플리케이션 골격을 신속하게 완성하기 위해서.. 2022. 5. 27.
[Programming] Content-Type과 Accept Header 차이점 Content-Type 헤더 Content-Type은 HTTP 메시지에 보내는 데이터 형식을 알려주는 헤더다. 거의 모든 HTTP 표준 스펙을 준수하는 브라우저와 서버는 우선적으로 Content-Type 헤더를 확인한다. HTTP에 담긴 데이터를 파싱하고 문자열화 하는 우선적인 기준이 Content-Type이다. 만약 서버와 브라우저가 주고 받는 HTTP 메시지에 Content-Type이 존재하지 않는 경우 데이터 형식에 대한 설명이 없기 때문에 단순 텍스트라고 가정하고 데이터를 파싱하는 프로그램을 별도로 작성을 해주어야 한다. HTTP 메소드 중에서도 GET 메소드의 경우 브라우저에서 특정한 데이터를 HTTP 메시지에 포함하지 않아도 상관없다. URI에 query나 패스 파라미터를 포함하여 요청하면 데.. 2022. 5. 26.
[Web Server] fetch API 사용하는 방법 fetch API 사용하는 방법 fetch는 프론트에서 서버로 리소스를 요청하기 위해서 Javascript에 내장된 Promise 함수다. 기본적으로 비동기 태생을 지닌 녀석이기 때문에 Javascript가 아닌 Node.js나 웹 브라우저 환경에서 지원하는 함수다. HTTP 메소드와 URI를 사용해서 리소스를 요청하게 되는데, 이 때 fetch 함수의 OPTION을 잘못 적거나, JSON 처리를 잘못하면 몇 시간 씩 디버깅을 한다고 시간을 날려먹을 수 있다. fetch API를 사용하는 방법은 간단하다. GET 같이 리소스를 그냥 받아만 오는 메소드는 추가 옵션 필요 없이 URI만 fetch 함수의 매개변수로 던져주고, then으로 시작하는 Promise 로직을 짜주면 된다. GET 메소드 사용 fet.. 2022. 5. 26.
[Node.js] Express 미들웨어 함수 미들웨어(Middleware) 함수 Express는 자체적인 최소한의 기능을 가진 라우팅 및 미들웨어 웹 프레임워크다. Express 애플리케이션은 일련의 미들웨어 함수를 호출한다. 미들웨어 함수란 요청 오브젝트(req)와 응답 오브젝트(res) 그리고 애플리케이션의 요청-응답 주기 중 다음 미들웨어 함수에 대한 액세스 권한을 가지는 함수다. express내에서 미들웨어 함수는 next()로 표시된다. 현재 미들웨어 함수가 요청-응답 주기를 종료하지 않는 경우 next()를 호출하여 다음 미들웨어 함수에 제어를 전달해야 한다. 만약 다음 next() 미들웨어 함수로 제어권을 전달하지 않는 경우 요청은 정지된 채로 아무것도 하지 않게 된다. 미들웨어 함수 구조 미들웨어는 프로세스 중간에 관여해 특정 역할을.. 2022. 5. 26.
[Web Server] Express Routing query VS params Express Routing 라우팅은 URI(또는 경로) 및 특정 HTTP 요청 메소드(GET, PUT, POST, DELETE 등)인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방식이다. 즉, 클라이언트가 특정 HTTP 메소드와 URI를 특정해서 서버에 요청하면 서버는 라우팅을 통해 요청에 맞는 응답을 결정 후 반환하게 된다. Express 프레임워크는 자체적인 라우터 기능을 제공한다. 각 라우터는 하나 이상의 핸들러 함수를 가지게 된다. 라우트가 일치할 때 전달 받은 핸들러 함수가 호출된다. add.METHOD(PATH, Handler); app은 express의 인스턴스다. METHOD는 HTTP 메소드다. PATH는 서버의 경로 Handler는 라우트가 일치하는 경우 호출되는.. 2022. 5. 26.
[Programming] 웹서버(Web)와 웹 어플리케이션 서버(WAS) 차이점 The difference between Web Server and Web Application Server 웹 서버(Web Server)와 웹 어플리케이션 서버(Web Application Server)는 엄연히 다른 개념이다. 요약하자면 사용자가 HTTP 요청을 서버로 부터 보내면 가장 먼저 요청을 받는 곳이 웹 서버(Web Server)다. 이 후 요청을 정적 데이터와 동적 데이터에 따라서 웹 어플리케이션 서버(WAS)로 보내게 되고 사용자에게 리소스를 반환한다. 동적 데이터 VS 정적 데이터 동적 리소스(Dynamic Pages) 사용자의 요청에 따라 동적으로 생성되는 리소스를 의미한다. DB 혹은 서버 어플리케이션 내부에서 생성된 리소스를 반환한다. 동적 리소스가 제공되는 곳은 웹 어플리케이션 서버(WAS)다. 정적 리소스(Static Pages) HTML, CSS, Javascript, Image 등.. 2022. 5. 25.