유승훈

mysql(1) - 유저관리(생성, 제거, 권한부여) 본문

languages/mysql

mysql(1) - 유저관리(생성, 제거, 권한부여)

seunghuni96 2020. 5. 4. 19:58

MYSQL 처음 접속하기

 

처음 우분투에 mysql을 설치하고 아무런 계정도 만들지 않았을때, root 계정으로 접속하는 방법은 크게 세가지가 있습니다.

 

 1. mysql -u root -p 입력하고 패스워드는 아무것도 입력하지 않은 채로 엔터친다.

 2. sudo mysql -u root -p를 입력한다.

 3. mysql -u root -p 입력하고 패스워드는 우분투 루트계정의 비밀번호를 입력한다.

 

첫번째 방법이 된다면 세번째는 되지 않을것이고, 반대로 세번째 방법으로 로그인이 된다면 첫번째로는 로그인이 되지 않을것입니다. 구글링해봤을때는 1,2가 나와있었는데, 1이 안되서 root 계정의 비밀번호를 넣어보니 잘 로그인되는것을 볼 수 있었습니다. 두번째의 경우에는 sudo 비밀번호를 치지않는 설정이 되어있지 않다면, 비밀번호를 두번 쳐야하는 약간의 번거로움이 있습니다.

 

sudo 명령을 비밀번호 치지 않고 날릴수 있도록 하는 방법은 밑의 글에 나와있습니다.

 

 

 

Linux(2) - 우분투 사용자 관리(sudo 권한 부여하기, unable to resolve host)

Linux(1) - 우분투 사용자 관리(추가, 수정, 삭제) 보통 우분투를 쓰면 초기 시스템 관리자인 root 보다는 개별 사용자를 만들어 그 계정으로 접속하는것을 권장합니다. 시스템 관리자이다보니 보안�

seunghuni96.tistory.com

들어가면 status;를 통해 대략적인 기본사항을 확인해볼수있습니다. 

 

 

어떤 버전을 쓰고있는지, 어떤 유저로 로그인했는지, mysql이 켜진지는 얼마나 됐는지, 문자열 설정은 어떻게 되어있는지 등을 볼수있습니다. 지금 mysql server나 db의 문자열은 우리에게 익숙한 utf8이 아닌 latin1이라는 문자열로 설정되어있습니다. latin1은 한글을 지원하지 않아서 한글 데이터를 insert하면 깨지는 현상을 볼수있습니다.

 

mysql의 문자열을 한글을 지원하는 utf8로 변경하는 과정은 간단합니다.

 

mysql(2) - mysql 기본설정(utf8 문자형)

ubuntu에 mysql을 처음 설치하고 status로 기본설정을 살펴볼수있습니다. 지금 접속해있는 유저나, 현재 설치된 mysql의 버전, 문자열 설정 등을 볼수있습니다. 그 중 Server, DB의 characterset이 latin1로 설��

seunghuni96.tistory.com

 

 

유저목록 확인하기

 

mysql데이터베이스의 user table에는 이런 데이터가 들어있습니다. 각 유저에 대한 정보들이 담겨있는 테이블인데, 유저명만 살펴보면,

 

 

이렇게 User 컬럼에는 유저들의 목록을. Host에는 그 유저의 접속권한이 어떻게 설정되어 있는지를 볼수있습니다. Host가 localhost로 되어있는 유저는 로컬에서만, %로 되어있는 유저는 로컬, 외부 상관없이 접속할수있습니다.

 

 

유저 생성하기

 

유저를 생성하는 구문은 아래와 같은 형태를 갖습니다. 

create user '유저명'@'호스트'(localhost or %) identified by '비밀번호';

mysql 문법에 어긋나지 않는 형태로 유저를 생성하면 Query OK를 반환합니다. 동일한 아이디의 유저가 이미 있거나, 따옴표가 들어가지 않는 등 문법에 어긋난 구문은 에러 메세지를 리턴합니다. 어떤 부분에서 에러가 나는지도 알려주니 잘 읽어보면 도움을 받을수있습니다.

 

 

유저 권한 부여하기

 

유저에게 권한을 부여하는 구문은 아래와 같습니다.

 grant 권한 on 권한대상 to '사용자'@'호스트';

권한 : 부여하고자 하는 권한은 우리가 sql문을 날리는 명령입니다. all privileges로 모든 권한을 부여할수도 있고, select만, update만 부여할수도 있습니다.

 

권한대상 : 해당 사용자에게 모든 DB 혹은 DB의 모든 테이블이 아니라 특정 DB나 테이블에만 한정된 권한을 부여하고자 한다면 권한대상에 DB명 혹은 DB명.테이블명의 형태로도 권한을 부여할수있습니다.

 

사용자 : 사용자와 그 사용자에게 등록된 호스트가 일치해야합니다. 만약 사용자명과 호스트가 일치하지 않는다면 유저를 찾을수없다는 메세지를 반환합니다.

 

 

이렇게 localhost인 race에 권한을 부여하려고 하면 찾을수없는 사용자라고 나오고, %인 race에 권한을 부여하면 정상적으로 쿼리가 실행되는것을 볼수있습니다.

 

 

 

유저 권한 확인하기

 

show grants for '유저명';

 

 

유저 권한 삭제하기

 

revoke all on 'DB이름'.'테이블명' from '사용자';

 

 

유저 삭제하기

 

drop user '유저명';

'languages > mysql' 카테고리의 다른 글

mysql(2) - mysql 기본설정(utf8 문자형)  (0) 2020.05.06
Comments