'2024/05'에 해당되는 글 4건

  1. 2024.05.09 react lazy 로딩
  2. 2024.05.09 PostgreSQL psql 커맨드창
  3. 2024.05.07 postgres 특정테이블 권한설정
  4. 2024.05.03 mongoDB 사용자->특정collection 허용.

react lazy 로딩

React.js 2024. 5. 9. 09:19

lazy로딩은 별도로 사용할 수도 있으나 아래와 같이 라우터와 함께 사용될 때 더욱 효과적이다.

(예시 코드)

import React, { Suspense } from 'react';
import { BrowserRouter as Router, Routes, Route } from 'react-router-dom';

const Home = React.lazy(() => import('./Home'));
const About = React.lazy(() => import('./About'));

function App() {
  return (
    <Router>
      <Suspense fallback={<div>Loading...</div>}>
        <Routes>
          <Route path="/" element={<Home />} />
          <Route path="/about" element={<About />} />
        </Routes>
      </Suspense>
    </Router>
  );
}

export default App;

 

 

Posted by yongary
,

 

PostgreSQL의 psql은 PostgreSQL 데이터베이스와 상호작용하기 위한 커맨드 라인 툴입니다. psql 내에서는 \로 시작하는 다양한 명령어가 있으며, 이를 메타 명령이라고 부릅니다. 여기 몇 가지 유용한 예제를 소개합니다:

  1. \c [database_name]
    데이터베이스 연결을 변경합니다. 예를 들어, 다른 데이터베이스로 전환하고 싶을 때 사용합니다.
  2. \d [table_name]
    특정 테이블의 스키마를 보여줍니다. 테이블 이름을 생략하면 모든 테이블, 뷰, 인덱스 등의 목록을 보여줍니다.
     
     
  3. \dt
    데이터베이스 내의 모든 테이블을 보여줍니다.
  4. \l
    사용 가능한 모든 데이터베이스의 목록을 보여줍니다.
    \l
  5. \i [filename]
    지정된 파일에서 SQL 명령을 읽어서 실행합니다.
    \i setup.sql
  6. \s [filename]
    psql 세션에서 실행한 명령어의 기록을 파일로 저장하거나 보여줍니다.
    \s commands.log
  7. \e
    기본 텍스트 에디터에서 마지막으로 실행한 SQL 명령을 편집할 수 있습니다. 에디터는 환경변수 EDITOR로 설정됩니다.
  8. \x
    쿼리 결과를 확장된 형식으로 보여줍니다. 컬럼이 많은 경우에 유용합니다.
     
  9. \conninfo
    현재 데이터베이스 연결 정보를 보여줍니다.
     
     
  10. \q
    psql에서 나갑니다.
Posted by yongary
,



CREATE USER otheruser WITH PASSWORD 'password';


GRANT INSERT, UPDATE, DELETE ON othertable TO otheruser;

이렇게만 하면, 기존 사용자는 그대로 crud가 가능한 상태에서,
새로운 특정사용자에게 othertable 특정테이블만  권한을 주게된다. 


(확인)

SELECT grantee, privilege_type
FROM information_schema.table_privileges
WHERE table_name='mytable';

 

 

///실 사용예제.

$ psql -h dbURL -U postgres -d postgres
> \c testdb
> CREATE USER otheruser WITH PASSWORD 'test';
> GRANT INSERT, UPDATE, DELETE, SELECT ON monthlydata TO otheruser;

> \c testdb otheruser
> SELECT grantee, privilege_type
FROM information_schema.table_privileges
WHERE table_name='monthlydata'

Posted by yongary
,

. 특정 컬렉션에 대한 접근 제한 설정

MongoDB에서는 특정 컬렉션에 직접적으로 접근을 제한하는 내장 기능을 제공하지 않습니다. 하지만, 역할 기반의 접근 제어(Role-Based Access Control, RBAC)를 사용하여 사용자 정의 역할을 생성하고, 이 역할을 통해 특정 컬렉션에 대한 접근을 제어할 수 있습니다.

먼저, mydatabase 데이터베이스에서 사용자 정의 역할을 생성합니다.

 

use mydatabase
db.createRole({
  role: "collectionReadWrite",
  privileges: [
    { resource: { db: "mydatabase", collection: "mycollection" }, actions: ["find", "update", "insert", "remove"] }
  ],
  roles: []
})

 

그런 다음, 이 역할을 사용자에게 할당합니다

 

db.updateUser("myUser", {
  roles: [
    { role: "collectionReadWrite", db: "mydatabase" }
  ]
})

 

 

======== 사전에 mongoDB에 사용자가 설정되지 않았다면 다음스텝 필요==========

1. MongoDB 인증 활성화

먼저 MongoDB 서버에서 인증을 활성화해야 합니다. 이는 위에서 설명한

 

mongod.conf 파일을 편집하여 security.authorization 옵션을 enabled로 설정함으로써 이루어집니다. 서버 재시작 후 인증이 필요하게 됩니다.

 

security:
  authorization: enabled

 

2. 관리자 생성

$ mongo

> use admin
> db.createUser({
  user: "admin",
  pwd: "password",
  roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
})

 

==> 모든 db에 비번에 필요할듯함. 

 

 

2.1 위에서 설명한 사용자 생성.

3. Spring Boot 애플리케이션 설정 변경

기존에 인증 없이 연결하던 Spring Boot 애플리케이션의 MongoDB 연결 설정을 업데이트하여 사용자 이름과 비밀번호를 포함하도록 해야 합니다. application.properties 또는 application.yml 파일에서 MongoDB 연결 URI를 다음과 같이 수정합니다:

 

# application.properties
spring.data.mongodb.uri=mongodb://username:password@host:port/database

Posted by yongary
,