개요



일반적으로 root 권한의 계정과 비밀번호를 알려주는 것은 매우 위험한 행위 입니다.

데이터베이스는 아주 중요한 정보이기에, select 권한만 주는 것을 권장하고 있습니다.



따라서, 다른 업체에서 DB 참고를 원할 때에는 

select 권한만 부여한 계정을 생성하고 알려주는 것이 좋습니다.




DB 접속


mysql -u root -p  

 

사용중인 계정 조회


 use mysql;     // mysql db 사용

 select host, user, password from user;     // 사용중인 계정 조회



계정 생성


create user 계정이름@localhost identified by '비밀번호';                  

create user 계정이름@'%' identified by '비밀번호';                           



권한 생성


grant select on db스키마.* to `계정이름`@`localhost` identified by '비밀번호';        

grant select on db스키마.* to `계정이름`@`%` identified by '비밀번호';         


모든 권한 부여

grant all privileges on 스키마.테이블 to '계정'@'localhost' identified by '비밀번호';

grant all privileges on 스키마.테이블 to '계정'@'%' identified by '비밀번호';



여기서 추가적으로 설명을 덧 붙이면

스키마.테이블의 경우 특정 테이블에 대한 권한만 부여 한다.

만약, 스키마.* 를 줄 경우 해당 스키마의 모든 테이블에 대한 권한을 부여 한다



@'host 주소'가 오게 된다.

@'localhost'의 경우 로컬 사용자 이고

@'%' 외부 접근을 모두 허용하는 것이다 ... 

따라서, 특정 대역만 열어 주려면 @'222.10. ......' 뭐 이런식으로 권한을 부여 하면 된다.

ex) @'200.100.%'   @'200.100.50.1'



수정사항 반영

mysql > flush privileges;


위 명령어를 입력하여 메모리에 반영하던가,

db를 내렸다가 올리면 변경된 사항이 반영된다.



db스키마.* 로 select 권한을 주게 되면 모든 테이블에 대한 select 권한을 주게 됩니다.

따라서, db스키마.해당 테이블로 주는 것을 권장 합니다.



블로그 이미지

사용자 yhmane

댓글을 달아 주세요