MySQL 계정 추가 및 권한설정

TEST 라는 DB가 만들어져 있다고 가정함

  1. root 계정 비밀번호 설정

    • cmd 창 실행 후 아래 명령어 입력
      명령어
      1
      mysql -uroot mysql
    • 비밀번호 변경

      명령어
      1
      2
      3
      4
      5
      -- 5.6 이하
      UPDATE USER SET PASSWORD = PASSWORD('[비밀번호]') WHERE USER = 'root'

      -- 5.7 이상
      SET PASSWORD FOR root@localhost = '[비밀번호]';
      예시
      1
      2
      3
      4
      5
      -- 5.6 이하
      UPDATE USER SET PASSWORD = PASSWORD('1234') WHERE USER = 'root'

      -- 5.7 이상
      SET PASSWORD FOR root@localhost = '1234';
  2. 계정 설정

    • 조회

      명령어
      1
      2
      3
      4
      5
      -- 5.6 이하
      SELECT HOST, USER, PASSWORD FROM USER;

      -- 5.7 이상
      SELECT HOST, USER, AUTHENTICATION_STRING FROM USER;
    • 추가

      명령어
      1
      CREATE USER [계정명]@[IP] IDENTIFIED BY '[비밀번호]';
      명령어
      1
      2
      3
      4
      5
      -- localhost에서만 접근 가능
      CREATE USER user@localhost IDENTIFIED BY '1234';

      -- '%'로 하면 모든 IP에서 접근 가능
      CREATE USER user@'%' IDENTIFIED BY '1234';
    • 삭제

      명령어
      1
      DROP USER [계정명]@[IP];
      명령어
      1
      2
      3
      4
      5
      -- localhost인 경우
      DROP USER user@localhost

      -- '%'인 경우
      DROP USER user@'%'
  1. 권한 설정
    • 추가

      명령어
      1
      GRANT [접근권한] ON [데이터베이스명].[테이블명] TO [계정명]@[IP];
      명령어
      1
      2
      3
      4
      5
      6
      7
      8
      -- *.* 로 하면 모든 데이터베이스와 해당 데이터베이스의 모든 테이블에 권한 허용 
      GRANT ALL PRIVILEGES ON *.* TO user@localhost;

      -- TEST 데이터베이스의 모든 테이블에 모든 권한 허용
      GRANT ALL PRIVILEGES ON test.* TO user@'%';

      -- TEST 데이터베이스의 모든 테이블에 SELECT, INSERT, UPDATE, DELETE 권한만 허용
      GRANT SELECT, INSERT, UPDATE, DELETE ON test.* TO user@'%';
    • 조회

      명령어
      1
      SHOW GRANTS FOR [계정명]@[IP];
      명령어
      1
      2
      3
      4
      5
      -- localhost인 경우
      SHOW GRANTS FOR user@localhost;

      -- '%'인 경우
      SHOW GRANTS FOR user@'%';
    • 삭제

      명령어
      1
      REVOKE [접근권한] ON [데이터베이스명].[테이블명] FROM [계정명]@[IP];
      명령어
      1
      2
      3
      4
      5
      -- 모든 데이터베이스의 권한 삭제 
      REVOKE ALL ON *.* TO user@localhost;

      -- 모든 데이터 베이스의 INSERT, UPDATE, DELETE 권한만 삭제
      REVOKE INSERT, UPDATE, DELETE ON *.* TO user@localhost;
  1. 적용
    • 아래 명령어 실행
      명령어
      1
      FLUSH PRIVILEGES;
공유하기 댓글