실제로이 세 사용자 계정은 실제로 매우 위험합니다. 데이터베이스를 테스트하는 데 큰 위협이됩니다.
불행히도 mysql은 테스트 데이터베이스에 대한 전체 액세스 권한을 제공합니다. 어떻게 찾을 수 있습니까?
이 쿼리를 실행하십시오.
SELECT user,host,db from mysql.db;
mysql을 설치하면 'test'라는 이름의 데이터베이스에 액세스하거나 처음 5자가 'test_'인 두 개의 행이 표시됩니다.
이것이 왜 문제입니까 ???
이 명령을 실행하십시오 :
$ mysql -u'' -Dtest
비밀번호없이 테스트 데이터베이스를 연결했을 것입니다.
이제 테이블을 작성하고 행으로로드하십시오.
CREATE TABLE mytable (a int);
INSERT INTO mytable VALUES (1);
알았어. 이 테이블의 크기를 30 배로 두 배로 늘릴 수 있습니까?
INSERT INTO mytable SELECT * FROM mytable;
INSERT INTO mytable SELECT * FROM mytable;
... (30 times)
INSERT INTO mytable SELECT * FROM mytable;
당신은 무엇을 얻습니까 ?? 1,073,741,824 개의 행이있는 테이블. 쉽게 4GB 이상.
어떤 크기의 테이블이든 만들 수 있다고 상상해보십시오. 테스트 데이터베이스에서 많은 테이블을 생성하고 자유롭게 액세스 할 수 있습니까?
이러한 상황에서 할 수있는 최선의 방법은이 쿼리를 실행하는 것입니다.
DELETE FROM mysql.db;
mysql을 다시 시작하십시오. 그러면이 세 계정이 제대로 작동하지 않게됩니다.
시도 해봐 !!!
업데이트 2011-09-12 10:00 EDT
삭제 :
DELETE FROM mysql.db;
FLUSH PRIVILEGES;
초기 설치에 필요한 것입니다. 그러나 사용자를 이미 설정 한 경우 대신 다음을 실행할 수 있습니다.
DELETE FROM mysql.db WHERE db IN ('test','test_%');
FLUSH PRIVILEGES;
이렇게하면 특정 두 가지 DB 권한이 제거됩니다.
내 대답에서 언급했듯이 세 가지 권한은 테스트 데이터베이스에 매우 위험합니다. 이 DELETE를 실행하면 데이터베이스를 테스트 할 수있는 모든 권한이있는 계정이 무효화됩니다.