-
사내에서 DB를 공유하는 프로그램의 개발도중 root DB에 사내 ip망에서만 접근하여 DB를 사용할 수 있는 권한을 주는 아래와 같은 명령어에 발생한 문제이다.
mysql --login-path=root
use mysql;
create user 'member'@'123.123.123.%';
GRANT ALL PRIVILEGES ON db_name.* TO 'member'@'123.123.123.%';
mysql --login-path=root
mySQL 5.6버전 이상부터는 보안 문제로 커맨드라인에 password를 직접 입력하는 것이 제한되어 login path를 이용하여 서버에 접속한다.
use mysql;
계정, 권한 관리를 위해 db를 mysql으로 선택
create user 'member'@'123.123.123.%';
접속 계정 생성 - 사용할 이름 member, hostname은 사내 ip를 노출할 수 없으니 '123.123.123.%'으로 대신함
GRANT ALL PRIVILEGES ON db_name.* TO 'member'@'123.123.123.%';
'member'@'123.123.123.%'에 모든 권한을 부여함
에러가 발생하고 관련 내용을 알아봤는데 외부 권한이 있는 root를 먼저 생성한 후 해당root에게 권한을 먼저 주고 원하는 사용자의 권한을 부여해야함
create user 'root'@'%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
GRANT ALL PRIVILEGES ON db_name.* TO 'member'@'123.123.123.%';
%는 외부의 모든 접속을 허용한다는 의미임
위와 같이 외부 접속 허용을 한 이후에도 아래의 명령어를 입력해도 해결되지 않았는데 반나절을 꼴아박고야 해결함..
create user 'root'@'123.123.123.%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'123.123.123.%';
GRANT ALL PRIVILEGES ON db_name.* TO 'member'@'123.123.123.%';
외부접속이 모두 허용되는 hostName이 아닌 권한을 주려는 계정과 동일한 대역대를 가지는 root의 권한을 부여 했어야 했다..
최종 커맨드
mysql --login-path=root
use mysql;
create user 'member'@'123.123.123.%';
create user 'root'@'123.123.123.%';
GRANT ALL PRIVILEGES ON *.* TO 'root'@'123.123.123.%';
GRANT ALL PRIVILEGES ON db_name.* TO 'member'@'123.123.123.%';
'CS > DB' 카테고리의 다른 글
댓글