2012-03-20 2 views
17

MySQL 데이터베이스의 user_account를 특정 테이블로 제한하려면 어떻게해야합니까? 예는 :MySQL 사용자를 특정 테이블로 제한하는 방법

내가 tb_Userstb_Employees 만 나중에 사용하기 위해 생성됩니다 db_Payroll의 테이블의 나머지 부분에 "RestrictedUser"를 제한 할
UserName: RestrictedUser 
DatabaseName: db_Payroll 
TableName: 
    tb_Employees 
    tb_Users 
    tb_Payroll_YYMMDD 
    tb_Payroll_Processed 

액세스 권한이 부여됩니다.

답변

27

전류 권한을 사용자가 한 가정하지, 당신은 정확하게 당신이 사용자에게 부여하고자하는 권한에 따라 다음

GRANT SELECT, INSERT, DELETE ON db_Payroll.tb_Users TO [email protected]'%' 
GRANT SELECT, INSERT, DELETE ON db_Payroll.tb_Employees TO [email protected]'%' 

을 수행 할 수 있습니다, 당신은 뭔가 다른, 예를 들어,에 SELECT, INSERT, DELETE을 변경할 수 있습니다 ALL PRIVILEGES.

그런 다음 권한이 플러시되어 효과적임을 기억하십시오.

FLUSH PRIVILEGES; 
당신은 실행하여 개별 테이블에 대한 액세스 권한을 부여 할 수 있습니다
+3

DML을 사용하여 직접 권한 테이블을 수정 한 경우에만 'GRANT'또는 다른 계정 수정 문을 사용한 후에'권한 정지 '를 수행 할 필요가 없습니다. http://dev.mysql.com/doc/refman/5.5/en/privilege-changes.html –

4

: 다른 테이블에 대한

GRANT ALL ON db_Payroll.tb_Users to [email protected]; 

와 유사합니다. 적절한 경우 ALL 대신 작업 목록을 사용하십시오.

아직 존재하지 않는 개별 테이블에 대한 액세스 권한을 모든 테이블에 대한 액세스 권한 부여없이 부여 할 수는 없습니다.

+0

"모든 테이블에 대한 액세스 권한을 부여하지 않고 존재하지 않는 개별 테이블에 액세스 권한을 부여 할 수 없습니다." 그게 내 주요 문제입니다, db_Payroll은 급여 응용 프로그램에 의해 사용되는, 나는 PHP를 사용하여 webinterface를 만들고 난 급여 응용 프로그램에서 사용 된 연결 설정을 작성하지 않고 연결을 보호하고 싶습니다. – aintgel

+5

테이블이 무엇인지 결정하고 적절한 테이블에 액세스 권한을 부여하십시오. 런타임에 테이블을 만드는 디자인이 필요하다면 STOP! 그러지 마. – duskwuff