2013-05-21 2 views
11

나는 MySQL 데이터베이스를 가지고 있으며 여러 테이블이 있습니다. 하나는 물론 사용자 이름과 암호 (나머지 정보도 포함)를 저장하는 users 테이블입니다. 스키마의 모든 테이블에 대해 사용자 (또는 그룹)에게 개별 필드에 대한 권한을 부여 할 수 있기를 원합니다. 아마도 예제가 도움이 될 것입니다 :MySQL의 개별 필드에 대한 권한 부여

거기에 'ACCOUNTS'라는 테이블이 있습니다. 이 표에서 사용자는 회사 (이름, 주소, POC 등)에 대한 모든 데이터를 채 웁니다. 그러나 LastPaymentDate와 같이 해당 사용자 만 읽을 수있는 필드가이 테이블에 첨부되도록하고 싶습니다 (변경하지 않아도됩니다!). 또한 이러한 사용자들간에 사용 권한이 다릅니다. 예를 들어, admin/superuser는 회사의 이름과 주소를 변경할 수 있지만 표준 사용자는 변경하면 안됩니다.

각 권한 수준 (그룹)에 대해 하나씩 테이블에 대한 여러 뷰를 만들어야 할 필요가 있다고 생각합니다. 저는 MySQL에 비교적 익숙하지 않아 이것이 최선의 방법인지는 모르겠습니다. 보기/편집 할 수있는 필드가 명시된 조회 테이블을 볼 수도 있습니다.

처음에는 코멘트 (또는 필드 이름)에 0-5의 값을 넣은 다음 사용자에게 권한 수준 (0은 볼 수 없지만 1 읽기 전용; 2 - 읽기 - 쓰기, 3 - (사용하지 않음), 4 - (사용하지 않음), 5 - 필드 자체 편집/삭제

어떤 제안 사항이 있습니까? '테이블 내의 각 컬럼에 대해, 전체 테이블하지 거라고

답변

23

당신은 사용자에게 개별 열에 대한 권한을 부여 할 수 있습니다,이 코드를 사용하여 :.

GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost'; 
을 여기에서 가져온

예 :

http://dev.mysql.com/doc/refman/5.1/en/grant.html

또한 사용자 나 MySQL은 (권한의 그룹입니다) SQL 역할 그룹에 대한 지원이 없습니다.

+0

필자는이 링크를 잠시 후에 읽지 만 예제를 올바르게 이해하면 col1을 선택 (또는 참조)하고 (col1, col2)에 값을 추가하는 기능이 부여됩니다. 나는 PHP를 작성하여 사용자를위한 페이지를 즉석에서 작성하고, 사용자 a) 필드를 볼 수 없는지, b) 읽기 전용 열로 가져올 것인지 또는 c로 할 것인지 결정하는 PHP 코드를 작성하려고합니다.) 읽기/쓰기 액세스를 얻습니다. 각 필드에 대한 액세스 수준 목록을 유지하는 방법을 찾고 있습니다. – Tanoshimi

+0

@ Tanoshimi Permissions은 mysql 데이터베이스에 저장된다 : columns_priv, db, host 테이블. 그것들을 사용하면 작업을 해결할 수 있습니다. 어쩌면 더 많은 질문을 할 수 있습니다. – user4035

+0

내가 가진 유일한 질문은 권한을 읽을 수 있다고 가정합니다. 기본적으로 "숨김" "읽기 전용"및 "쓰기"를 갖고 싶습니다. PHP가 페이지를 만들 때, 나는 그것들을 사용하여 a) 아무 것도 보여주지 않거나, b) 텍스트로 보여 주거나, c) 테이블을 업데이트하는 코드가있는 텍스트 박스로 보여 주려고하는지 여부를 결정하기 위해 사용하고 싶다. 나는 USAGE를 None으로 사용할 수 있다는 것을 알고 있지만, 나는 페이지 생성시에 읽을 수 있는지 궁금합니다. – Tanoshimi

관련 문제