Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

사용자가 MySQL의 특정 스키마에 액세스하지 못하도록 하는 방법은 무엇입니까?

<시간/>

사용자가 특정 스키마에 접근하지 못하도록 하려면 delete 명령어를 사용해야 합니다. 다음은 구문입니다 -

DELETE FROM mysql.db WHERE Db IN("yourSpecificSchema","yourSpecificSchema\_%") AND 사용자 ="yourUserName" AND 호스트 ="yourHostName";

사용자가 특정 스키마에 액세스하지 못하도록 위의 구문을 구현해 보겠습니다. 먼저 MySQL.user 테이블의 모든 사용자와 호스트를 표시해 보겠습니다.

mysql> MySQL.user에서 사용자, 호스트 선택;

이것은 다음과 같은 출력을 생성합니다 -

+------------------+-----------+| 사용자 | 호스트 |+------------------+-----------+| 밥 | % || 사용자2 | % || mysql.infoschema | % || mysql.세션 | % || mysql.sys | % || 루트 | % || @사용자 이름@ | 로컬 호스트 || 아담 스미스 | 로컬 호스트 || 크리스 | 로컬 호스트 || 데이비드 | 로컬 호스트 || 제임스 | 로컬 호스트 || 존 | 로컬 호스트 || 존 도 | 로컬 호스트 || 사용자1 | 로컬 호스트 || 오전 | 로컬 호스트 || 학생 | 로컬 호스트 || mysql.infoschema | 로컬 호스트 || mysql.세션 | localhost |+------------------+-----------+18행 세트(0.00초)

여기서 호스트 이름이 'localhost'인 사용자 'Chris'가 이름이 'sample'인 특정 스키마에 액세스하는 것을 방지합니다 -

mysql> DELETE FROM mysql.db WHERE Db IN("sample","sample\_%") AND User="Chris" AND Host="localhost";Query OK, 영향을 받는 행 0개(0.00초) 

위 쿼리를 실행한 후 FLUSH를 사용해야 합니다.

mysql> FLUSH PRIVILEGES;쿼리 OK, 영향을 받는 행 0개(0.06초)