DBMS - Day2 사용자, 스키마, 권한부여, localhost

김지원·2022년 6월 11일
0

DBMS

목록 보기
3/17

글스니는 맥사용자라 글로 설명을 하겠읍니다. 🤓

window.ver

MariaDB1700 가 컴퓨터에서 돌아가고 있는지 확인하는 방법

win + R
Cmd 창에서 services.msc
서비스창에서 MariaDB1700 누르고 서비스 상태가 '실행 중'인지 확인.
실행 중이 아니라면 '시작'버튼을 누르면 된다.

MySQL Workbench 를 사용한다.
구글에 검색 'MySQL Workbench'

다운로드 누르고

이 창이 뜨면 로그인하지 않고 다운로드를 진행한다.

여기 클릭.

다운로드가 다 되고 뜨는 창에서 다 next 누른다.
마지막 창에서 왼쪽 아래 체크하고 나서 finish 누른다.
MySQL Workbench이 실행이 된다.
MySQL Connections 의 + 누른다.

Connection name : MariaDB1700
Hostname : 그대로 둔다. (127.0.0.1)
Port : 23306
Username : 그대로 둔다. (root)

=> test Connection => 비밀번호 입력 => 경고뜨면 continue
=> Successfully~~~ 완료 창 뜬다. => okay

MariaDB1700 항목(네모창)이 뜨는데 클릭! continue anyway 체크 후 들어간다.

이곳에서 쿼리를 적고 결과를 보게된다.


본격적으로 DB를 다루어보자.


주석은 이 두 가지로 사용한다.

작성 시 공통 사항

  • 키워드는 대문자로 (CREATE, DELETE ...)
  • 데이터베이스의 구성요소백틱(`)으로 감싼다.
    (사용자, 호스트, 스키마, 테이블, 열 이름 등)
  • 데이터베이스의 구성요소의 이름은 소문자로 쓰되,
    단어간 구분은 언더스코어(_)로 한다.
    • 가령, student_scores, city_pops등 (studentScores, cityPops아님)
    • 참고 : 위 명명법(Naming Convention)을 스네이크 케이스(Snake Case)라고 한다.
  • 데이터베이스의 구성요소가 아닌 문자 값은 홑따옴표(')나 쌍따옴표로(")로 감싼다.

명명법

ex) Republic Of Korea
카멜 케이스 : republicOfKorea (멤버변수)
파스칼케이스 : RepulicOfKorea (클래스이름)
스네이크 케이스 : republic_of_korea
어퍼스네이크 케이스 : REPUBLIC_OF_KOREA(11분) 정적인..
케밥 케이스 : republic-of-korea


사용자 생성

                     ↓ 사용자 호스트
CREATE USER `study`@`localhost` IDENTIFIED BY 'test1234';
             ↑ 사용자 이름                       ↑ 사용자 비밀번호


구성요소가 되는건 `(백틱)으로 사용한다.
비밀번호는 구성요소라고 할 수 없기 때문에 문자열로 인식해서 홑따옴표를 사용한다.

=> command + enter 하게 되면


이렇게 성공했다고 뜬다. 물개에 초록색 동그라미 불이 들어오면 연결이 되었다는 의미이다.

사용자 삭제

DROP USER `study`@`localhost`;

=> command + enter

사용자 수정

ALTER  USER `study`@`localhost` IDENTIFIED BY 'test1234';
             ↑ 사용자 이름                        ↑ 바꿀 비밀번호

사용자 조회

SELECT `user`,`host` FROM `mysql`.`user`;
        ↑ 열                        ↑ 테이블


아래에 어떤 사용자가 사용되었는지 조회된다.
user host 라는 열이 만들어진 걸 확인해볼 수 있다,.


스키마(Schema, Database)

  • 스키마(Schema, Database)는 실제 데이터를 포함하지 않는다.
  • 스키마는 단순히 서로 관련있는 테이블(Table)을 담기 위해 존재한다.

엑셀파일과 동일하다. 실제 데이터는 엑셀파일 자체에서 가진게 아닌 엑섹파일이 시트들을 가지고 있다. 즉, 시트에 데이터들이 들어있다.

=> 스키마는 데이터를 가지지 않고 스키마가 가진 테이블 안에 데이터가 담긴다.

스키마 생성

CREATE SCHEMA `region`;
               ↑ 스키마 이름

스키마 조회

SHOW SCHEMAS;


스키마 조회의 결과.

스키마의 수정키워드는 없고 삭제키워드는 존재한다.

스키마 삭제

DROP SCHEMA `region`;
--             ↑ 스키마 이름

CREATE한 걸 DROP 후 다시 실행해보면 region이 사라진 걸 확인할 수 있다.

같은 이름으로는 또 다른 스키마를 만들지 못하는데 이걸 사용하면 가능하다.

CREATE SCHEMA IF NOT EXISTS `region`;
-             ↑ IF NOT EXISTS 는 동일한 이름의 스키마가 존재하더라도 오류 발생 x

삭제 또한 있다!
삭제도 없는걸 삭제하려면 오류가 뜨느데 '오류 발생하지말고 삭제해' 라고할때 사용한다.

DROP SCHEMA IF EXISTS `region`;

여기적은 쿼리들의 실행주체는 root이다.


CREATE SCHEMA dkfjdjafldf;

모든 권한 부여

              ↓ 모든 스키마의 모든 테이블
GRANT ALL ON *.* TO `study`@`localhost`;
      ↑ 모든 권한      ↑ 사용자

특정 권한 부여

GRANT CREATE, SELECT ON *.* TO `study`@`localhost`;
-> GRANT 한 이후에 하면 아무런 소용이 없다.

모든 권한 회수

REVOKE ALL ON *.* FROM `study`@`localhost`;

특정 권한 회수

REVOKE CREATE, SELECT ON *.* FROM `study`@`localhost`;

적용

FLUSH PRIVILEGES;

localhost

MariaDb : Server
Intelij : client

이 두개가 한 컴퓨터에서 돌아가고 있다.
접속을 인텔리제이에서 서버로 하는 것이고 실행결과를 서버가 인텔리제이에게 돌려준다.
어차피 한 컴퓨터에서 돌아가는 일이다.

우리가 지금 study계정으로 로그인을 할 수 있었던 이유는 localhost이기 때문에 가능했다.
localhost는 127.0.0.1에 대응되는 도메인이라 생각하면 된다.
localhost = 127.0.0.1 (어떠한 컴퓨터에서 동일한 값이다.)
www.google.com = 172.217.175.238

그러면 사용자 호스트가 말하고자하는게 뭐냐면.
이 이름을 이용해서 우리 서버에 접속할 수 있는 원격 호스트를 제안한다는 뜻이다.

내 컴퓨터    옆자리 컴퓨터
192.198.01 192.198.02 가 있다고 생각하자.

옆자리 컴퓨터가 192.198.02만 이용해서 우리 계정에 접속하려고 한다.
옆자리는 02인데 서버는 01에서 돌아가고 있다. 접속하는 대상은 192.198.01으로 적어야한다. => 접속을 시도하면 이 서버가 받은 요청은 로그인 시도한 걔정이 study@192.198.02`; 라고 뜬다.
=> 비밀번호가 맞아도 로그인이 되지않는다.

study@%;
% : 호스트를 가리지 않겠다.
누구나 아이디 비밀번호만 맞으면 들어올 수 있게 해준다.

모든계정한테 SELECT라는 권한을 주었다.

127.0.0.1과 실제 내 컴퓨터의 ip주소 두개로 로그인을 해보자.
둘다 가르키는 컴퓨터는 내 컴퓨터이다.
접속까지는 된다. 그러나 접근은 거부가 된다. 권한을 주었던 SELECT만 된다.

127.0.0.1 create 스키마가 정상적으로 된다.
그러데 내 실제 컴퓨터 ip주소는 스키마 생성이 거부가 된다.

공유기
127.0.0.1은 내컴퓨터를 벗어나지 않는다. 실제 컴퓨터 ip주소는 내 컴퓨터안에서 도는 것이 아닌 공유기를 거쳐서 MariaDB로 돌아 온다. MariaDB입장에서는 요청이 내컴퓨터에서 도는 것이 아닌 공유기에서 요청이 들어오고있는 것이다.
이것은 localhost가 아니다! 외부에서 접속이 들어온 것이기 때문에 누가 보냈는지 모른다.
즉, study의 localhost로 로그인 된 것이 아닌 study의 %계정으로 로그인이 된 것이다.

study % 계정이 없다면 아얘 로그인 자체도 되지 않는다.
study와 일치하는 계정은 localhost 밖에 없기 때문이다.

실무에서는 localhost를 보안의 이유로 거의 쓰지 않는다.

Database VS Excel

스키마 : 엑셀 파일 그 자체(xlsx)
테이블 : 엑셀 시트
열    : 열
레코드 : 행
profile
Software Developer : -)

0개의 댓글