prisma init
schema.prisma 파일안에
datasource db {
provider = "mysql"
url = "mysql://유저:비번@localhost:3306/markhouse__"
}
//Prisma Generate는 데이터 모델을 사용하여 Prisma Client를 생성하는 도구입니다.
//Prisma Client를 사용하면 데이터베이스에 대한 CRUD 작업을 쉽게 수행할 수npx prisma migrate reset 있습니다.
generator client {
provider = "prisma-client-js"
}
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
posts Post[]
}
model Post {
id Int @id @default(autoincrement())
title String
author User @relation(fields: [authorId], references: [id])
authorId Int
}
❯ npx prisma db push
Prisma schema loaded from prisma/schema.prisma
Datasource "db": MySQL database "markhouse__" at "localhost:3306"
MySQL database markhouse__ created at localhost:3306
🚀 Your database is now in sync with your Prisma schema. Done in 136ms
✔ Generated Prisma Client (4.10.1 | library) to ./node_modules/@prisma/client in 44ms
| markhouse__생김

+
만약 show tables를 실행했을 때 _prisma_migrations 테이블만 보인다면, 아마도 Prisma Migrate를 통해 생성한 마이그레이션 파일로 데이터베이스 스키마를 생성하지 않은 것으로 추정됩니다.
Prisma Migrate를 사용하여 데이터베이스 스키마를 생성하려면 다음과 같은 단계를 따라야 합니다.
- prisma init 명령어를 사용하여 Prisma 프로젝트를 초기화합니다.
- schema.prisma 파일을 생성하고, 데이터베이스 스키마를 정의합니다.
- prisma migrate save 명령어를 사용하여 마이그레이션 파일을 생성합니다.
- prisma migrate up 명령어를 사용하여 마이그레이션을 적용하여 데이터베이스 스키마를 생성합니다.
위 단계를 수행하고 나면 show tables 명령어를 실행하여 데이터베이스 내 모든 테이블을 볼 수 있습니다. 만약 테이블이 여전히 보이지 않는다면, DBeaver에서 해당 데이터베이스에 대한 연결을 확인해야 합니다. 데이터베이스 연결이 올바른지 확인하고, 다시 시도해 보시기 바랍니다.
권한 문제가 생긴다면
모든 사용자 조회하는 법
SELECT user, host FROM mysql.user;
사용자 조회해보고
비밀번호 확인해볼 것(모른다면 재설정하기)
ALTER USER '사용자명'@'호스트명' IDENTIFIED BY '새로운 비밀번호';
또는
ALTER USER '사용자명'@'호스트명' IDENTIFIED WITH mysql_native_password BY 'new_password';
권한도 확인해볼 것
권한 체크
SHOW GRANTS FOR 'database_user'@'localhost';
권한 주기
GRANT CREATE, DROP ON *.* TO 'database_user'@'localhost';
root 모든 걸 볼수 있는거
다른 권한에서 만든 것도 볼 수 있음
다른 유저로 안들어가졌던 이유는 그저 비번 틀려서 접근 안되었던 거였음.
dbeaver는 그냥 mysql에서 만든 데이터 깔끔하게 보여주는 툴임.
localhost, 유저, 비번 잘입력하면 연결은 되어서 생성됨
추가로 테이블 생성했을 때 mysql터미널에서는 생긴게 보이는데 dbeaver에 바로 반영안되는 이유가 뭐지?
아 dbeaver refresh 버튼 눌러서 새로고침하니까 있다 얏호~!~!~!~
+
root는 MySQL에서 가장 높은 권한을 가진 사용자입니다. root 사용자는 모든 데이터베이스와 모든 객체에 대한 모든 권한을 가지고 있습니다. 즉, root 사용자는 MySQL 서버에서 모든 작업을 수행할 수 있습니다.
MySQL에서 root 사용자는 기본적으로 "localhost" 호스트에서만 로그인할 수 있습니다. 이는 보안상의 이유로 설정되어 있습니다. 따라서, 원격 호스트에서 root 계정으로 로그인하려면 특별한 설정이 필요합니다.
그러나, root 계정은 매우 강력하며 위험하기 때문에 일반적으로 MySQL 서버에는 다른 사용자 계정을 만들어 사용합니다. 이렇게 하면 보안상의 문제를 최소화할 수 있습니다.
+
sudo는 "Superuser Do"의 준말로, 리눅스나 유닉스 시스템에서 일반 사용자가 시스템 관리자(root)의 권한을 일시적으로 얻을 수 있는 명령어입니다.
리눅스나 유닉스 시스템에서 root 계정은 시스템 전체를 관리할 수 있는 권한을 가지고 있으므로, root 권한을 가진 사용자로 로그인하면 시스템 보안에 큰 위험이 따릅니다. 따라서, 보안상의 이유로 일반 사용자가 root 권한을 가지지 못하도록 설정되어 있습니다.
이때, 일반 사용자가 시스템 관리 작업을 수행해야 할 경우, sudo 명령어를 사용하여 일시적으로 root 권한을 얻을 수 있습니다. 이때, 사용자는 자신이 수행하려는 작업을 sudo 명령어 뒤에 입력하면 됩니다.
예를 들어, 일반 사용자가 시스템 업데이트를 수행하려면 다음과 같이 sudo 명령어를 사용할 수 있습니다.
+
mysql_native_password는 MySQL에서 기본으로 제공하는 인증 플러그인 중 하나입니다.
이 플러그인은 기존의 비밀번호 인증 방식과 호환되도록 설계되어 있어, 기존에 비밀번호로 인증했던 사용자들도 계속해서 이 플러그인을 사용하여 인증할 수 있습니다.
auth_socket 플러그인과 달리, mysql_native_password 플러그인을 사용하는 경우에는 비밀번호가 필요합니다. 따라서, 해당 사용자의 비밀번호를 잊어버린 경우에는 비밀번호를 재설정해주어야 합니다.
만약 mysql_native_password 플러그인 대신 caching_sha2_password 플러그인을 사용하는 경우에는, 새로운 비밀번호를 설정할 때 IDENTIFIED WITH mysql_native_password 구문을 생략해야 합니다.
'데이터베이스 > mySQL' 카테고리의 다른 글
docker란? (0) | 2023.03.05 |
---|---|
prisma 와 nexus 의 차이가 뭐야? (0) | 2023.02.19 |
how to handle Error 'ERROR 1044 (42000): Access denied for user 'root'@'localhost' to database '' (0) | 2023.02.09 |
what is difference between 'databases' and 'schema' (0) | 2023.02.09 |
how to fix Error 'SELECT command denied to user ''@'localhost' for table `mysql`.`user`' in dbeaver (0) | 2023.02.08 |