2012-04-15 3 views
1

원격 호스트에서 연결을 시도하는 데 GRANTS를 많이 사용했습니다. 그래서 나는했다 :mysql.user 테이블에서 부실 항목을 삭제할 수 있습니까?

GRANT ALL PRIVILEGES ON *.* TO 'prog'@'foobar-dev.foobar.com' WITH GRANT OPTION; 

그러나 'foobar-dev'는 더 이상 존재하지 않는다.

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'prog'@'foobar-dev.foobar.com'. 

이것은 모든 열을 설정하고

나는 다음과 같은 REVOKE는, 희망 mysql 데이터베이스에서 user의 항목이 사라질 것 않았다 .. 다른 존재하지 않는 호스트에 대한 다른 항목의 무리가있다 mysql.user를 'prog'@'foobar-dev.foobar.com'에 대해 'N'으로 설정했는데 행을 삭제하는 것이 더 좋고 (그리고 더 깔끔한) 좋지 않을까요? 나는 이것이 무언가를 깨뜨릴 수 있고, 익숙하지 않은 시스템 테이블의 참조 무결성을 위반하여 행을 지우지 않았습니다. 하지만, mysql.user를 사용하여 권한을 확인하기 위해 매번 그것을보아야하는 모호한 항목이있는 것은 혼란 스럽습니다. 나는 항상 시스템 테이블이 현실을 반영해야한다고 생각했다.

그래서 mysql.user는 "자체적으로 대기"하여 행을 삭제하면 다른 테이블에 영향을주지 않습니까? 이 테이블을 유지 관리하는 올바른 방법은 무엇입니까?

이것은 무엇인가?

delete from mysql.user where Host = 'foobar-dev.foobar.com' and User = 'prog'; 

TIA!

답변

0

이어야합니다. 사용 권한을 취소하기 전에 제안 된 방법으로 사용되는 mysql.user에서 삭제하는 권한을 취소합니다. 최근 버전의 mysql을 사용하는 경우 drop user 'prog'@'foobar-dev.foobar.com';을 사용하여 권한을 취소하고 나중에 사용자 테이블에서 삭제할 수 있습니다. http://dev.mysql.com/doc/refman/5.0/en/drop-user.html

+0

올바른 방향으로 나를 가리켜 주셔서 고맙습니다. –

관련 문제