데이터베이스 관리 세계에서 사용자 액세스 제어는 데이터 무결성과 보안을 유지하는 데 매우 중요합니다. 이 블로그 게시물은 프로세스, 잠재적인 함정, 디버깅 단계를 포함하여 MySQL 사용자 권한을 설정하는 실제 시나리오를 안내합니다.
당신이 여러 데이터베이스가 있는 회사의 데이터베이스 관리자라고 가정해 보십시오.
귀하의 작업은 다음 요구 사항에 따라 'analyst'라는 사용자에 대한 권한을 설정하는 것입니다.
MySQL의 GRANT 및 REVOKE 문을 사용하여 이를 달성할 수 있는 방법을 살펴보겠습니다.
먼저 관리 계정으로 MySQL 서버에 연결해야 합니다.
mysql -h hostname -P port -u admin -p
'호스트 이름', '포트' 및 '관리자'를 실제 서버 세부 정보 및 관리자 사용자 이름으로 바꾸세요.
사용자가 아직 존재하지 않는 경우 이를 생성해야 합니다.
CREATE USER 'analyst'@'%' IDENTIFIED BY 'password';
'비밀번호'를 강력하고 안전한 비밀번호로 바꾸세요.
이제 필요한 권한을 부여해 보겠습니다.
-- Grant SELECT on original databases GRANT SELECT ON products.* TO 'analyst'@'%'; GRANT SELECT ON customers.* TO 'analyst'@'%'; GRANT SELECT ON orders.* TO 'analyst'@'%'; GRANT SELECT ON analytics.* TO 'analyst'@'%'; -- Grant all privileges on copy databases GRANT ALL PRIVILEGES ON products_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON customers_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON orders_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON analytics_copy.* TO 'analyst'@'%'; -- Grant global privileges GRANT PROCESS, SHOW DATABASES ON *.* TO 'analyst'@'%'; -- Apply the changes FLUSH PRIVILEGES;
권한을 설정한 후에는 이를 확인하는 것이 중요합니다.
SHOW GRANTS FOR 'analyst'@'%';
우리 시나리오에서는 처음에 '분석가'에게 권한이 너무 많은 문제가 발생했습니다.
mysql> SHOW GRANTS FOR 'analyst'@'%'; --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | Grants for analyst@% | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO "analyst"@"%" WITH GRANT OPTION | | GRANT REPLICATION_APPLIER,ROLE_ADMIN ON *.* TO "analyst"@"%" WITH GRANT OPTION | ... ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
이 문제를 해결하기 위해 모든 권한을 취소한 다음 필요한 권한만 부여했습니다.
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'analyst'@'%'; GRANT PROCESS, SHOW DATABASES ON *.* TO 'analyst'@'%'; -- Then re-grant the specific permissions as shown in Step 3
과도한 권한을 수정한 후 복사 데이터베이스에 대한 권한이 누락된 것을 확인했습니다.
mysql> SHOW GRANTS FOR 'analyst'@'%'; ----------------------------------------------------- | Grants for analyst@% | ----------------------------------------------------- | GRANT PROCESS, SHOW DATABASES ON *.* TO "analyst"@"%"| | GRANT SELECT ON "products".* TO "analyst"@"%" | | GRANT SELECT ON "customers".* TO "analyst"@"%" | | GRANT SELECT ON "orders".* TO "analyst"@"%" | | GRANT SELECT ON "analytics".* TO "analyst"@"%" | -----------------------------------------------------
사본 데이터베이스에 대해 누락된 권한을 추가했습니다.
GRANT ALL PRIVILEGES ON products_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON customers_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON orders_copy.* TO 'analyst'@'%'; GRANT ALL PRIVILEGES ON analytics_copy.* TO 'analyst'@'%'; FLUSH PRIVILEGES;
이러한 모든 변경 사항과 수정 사항을 적용한 후 최종 승인은 다음과 같습니다.
mysql> SHOW GRANTS FOR 'analyst'@'%'; ----------------------------------------------------- | Grants for analyst@% | ----------------------------------------------------- | GRANT PROCESS, SHOW DATABASES ON *.* TO "analyst"@"%"| | GRANT SELECT ON "products".* TO "analyst"@"%" | | GRANT SELECT ON "customers".* TO "analyst"@"%" | | GRANT SELECT ON "orders".* TO "analyst"@"%" | | GRANT SELECT ON "analytics".* TO "analyst"@"%" | | GRANT ALL PRIVILEGES ON "products_copy".* TO "analyst"@"%"| | GRANT ALL PRIVILEGES ON "customers_copy".* TO "analyst"@"%"| | GRANT ALL PRIVILEGES ON "orders_copy".* TO "analyst"@"%"| | GRANT ALL PRIVILEGES ON "analytics_copy".* TO "analyst"@"%"| -----------------------------------------------------
적절한 MySQL 사용자 권한을 설정하는 것은 까다로울 수 있지만 데이터베이스 관리의 중요한 측면입니다. GRANT 및 REVOKE 문을 주의 깊게 사용하고 항상 결과를 확인하면 사용자를 위한 안전하고 기능적인 환경을 만들 수 있습니다.
다음 핵심 사항을 기억하세요.
이 지침과 이 게시물에 설명된 단계를 따르면 MySQL 사용자 권한을 효과적으로 관리할 수 있는 준비를 갖추게 됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3