2010-02-12 2 views
0

사용자가 다른 사용자가 삽입 한 레코드 (행)를 삭제할 수 없도록하는 권한 또는 부여 명령이 테이블에 있습니까? 그러나 자신의 기록을 삭제하거나 업데이트 할 수 있습니까?MySQL 사용자 권한

감사합니다, 스티븐

+0

각 사용자별로 별도의 테이블을 만드시겠습니까? (그냥 놀림, 그건 끔찍한 일 이겠지만 (끝내는 것을 보았습니다)) – ysth

+0

오, 어떻게 500 명의 사용자를 관리 했나요? – Stephen

답변

0

아니, 이것은 MySQL의 상단에서 실행되는 응용 프로그램에 의해 해결되어야한다.

+0

Thanks Chuck, 하지만이 사용자가 로컬 또는 원격의 mysql 클라이언트 명령에 액세스 할 수 있다면 응용 프로그램 계층을 우회 할 수 있습니까? – Stephen

+0

솔직히 다른 해결책을 찾아야 할 수도 있습니다. 이 작업을 수행하는 데이터베이스에 대해서는 잘 모르겠지만 존재한다면 놀랄 일은 아닙니다. 어쩌면 당신이 저에게 세부 사항을 더 주면 더 많은 것을 도울 수 있습니다. –

+0

내 사용자가 데스크톱 응용 프로그램을 원격으로 사용하고 있음을 의미합니다. 이것은 로컬 호스트 사용자 만이 아닙니다. (항상 로컬 호스트가되기를 바랍니다.) 나는 그들에게 UPDATE와 INSERT를 주었고, 네, 그들은 다른 사용자 레코드도 업데이트 할 수 있습니다. – Stephen

0

귀하의 케이스에서 다음과 같이 실행될 수 있는지 확실하지 않지만 도움이 될 수 있다고 생각합니다. 각 사용자에 대해 해당 사용자의 레코드 만 선택하고 뷰에서 삭제할 수는 있지만 선택하는 테이블은 삭제하지 못하도록하는 업데이트 가능보기 (sql security definer 포함)를 만들 수 있습니다. 사용자는 sql security definer으로 사용자가 다음을 수행 할 수 있어야합니다. 테이블에서 삭제되도록 뷰에서 삭제하십시오. 또한 사용자가 새 레코드를 만들 때마다보기를 업데이트해야합니다. 그렇지 않으면보기가 만들어 질 때보기가 고정됩니다. create viewupdatable views에 대한 문서를 참조하십시오.

+0

감사합니다. Alex. 이것은 시도 일 수 있지만 나를 위해 유지하기가 너무 어렵습니다. 클라이언트 인터페이스를 기반으로 한 유효성 검사가 있습니까? – Stephen

+0

@Stephen, MySQL에 대한 많은 "클라이언트 인터페이스"가 있습니다. 사용자가 원하는 세분화 된 권한 검사를 수행하는 사람은 아무도 없습니다. 그러나 사용자가 하나라도 발견하더라도 사용자가 다른 사용자를 사용하여 검사를 건너 뛸 수 있습니다. 서버 측 강제 만이 정말로 도움이 될 수 있습니다. 또는 사용자가 MySQL DB에 실제로 연결할 수 없도록 자신 만의 특수 계층을 서버와 함께 공동으로 코딩 할 수 있습니다 (모든 프로그래밍 언어에서). 원하는 모든 비즈니스 로직을 수행 할 수있는 특수 계층. 나는이 루트를 선택하면 엄청난 작업량을 예측할 수 있습니다. –

+0

오늘 아침에 내가 느낀 점. 이것은 웹 브라우저 클라이언트 전용 솔루션이 될 것입니다. 다른 소유자의 기록을 위해 원격 클라이언트가 없습니다. oracle 가상 개인 데이터베이스에 대해 읽었습니다. 그러나 이것은 내가 작업하고있는 FreeBSD 서버입니다. – Stephen

0

u는 프로그래밍 언어로 acl을 구현해야합니다. zend 같은 라이브러리는 u (PHP 언어 사용)에서 일합니다.