수색…


베스트 프랙티스

루트 (및 다른 SUPER 특권 사용자)를

GRANT ... TO root@localhost ...

이렇게하면 다른 서버에서 액세스하지 못하게됩니다. 아주 소수의 사람들에게 SUPER를 나누어 주어야하며, 그들은 그들의 책임을 인식해야합니다. 응용 프로그램에는 SUPER가 없어야합니다.

응용 프로그램 로그인을 사용하는 하나의 데이터베이스로 제한하십시오.

GRANT ... ON dbname.* ...

그렇게하면 응용 프로그램 코드를 해킹하는 사람은 dbname을 지나칠 수 없습니다. 이것은 다음 중 하나를 통해 더 세분화 될 수 있습니다.

GRANT SELECT ON dname.* ...    -- "read only"
GRANT ... ON dname.tblname ... -- "just one table"

읽기 전용에는 '안전한'일도 필요할 수 있습니다.

GRANT SELECT, CREATE TEMPORARY TABLE ON dname.* ...    -- "read only"

당신이 말했듯이 절대적인 보안은 없습니다. 여기 내 요점은 해커가 느려지는 몇 가지 일을 할 수 있다는 것입니다. (똑같은 사람들이 노는 것에 대해서도 마찬가지입니다.)

드문 경우이지만 응용 프로그램을 사용하여 루트 사용자 만 사용할 수 있습니다. 이 작업은 SECURITY DEFINER 가있는 "저장 프로 시저"를 통해 수행 할 수 있습니다 (루트가 정의 함). SP가 수행하는 것만 노출됩니다. 예를 들어 특정 테이블 하나에 특정 작업이있을 수 있습니다.

호스트 (user @ host 중)

"호스트"는 호스트 이름 또는 IP 주소 일 수 있습니다. 또한, 그것은 와일드 카드를 포함 할 수 있습니다.

GRANT SELECT ON db.* TO sam@'my.domain.com' IDENTIFIED BY 'foo';

예 : 참고 : 일반적으로 인용 부호가 필요합니다.

localhost -- the same machine as mysqld
'my.domain.com' -- a specific domain; this involves a lookup
'11.22.33.44' -- a specific IP address
'192.168.1.%' -- wild card for trailing part of IP address.  (192.168.% and 10.% and 11.% are "internal" ip addresses.)

localhost 사용하면 서버의 보안에 의존합니다. 모범 사례를 위해서 root 는 오직 localhost를 통해서만 허용되어야합니다. 경우에 따라 0.0.0.1::1 과 같은 의미입니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow