걱정하지 마십시오.
mysql.user
테이블은 모든 데이터베이스에 대한 특정 글로벌 권한을 완화합니다.
사용자가 특정 데이터베이스로 제한되어있는 경우 mysql.db 테이블에만 데이터베이스 관련 권한이 표시됩니다. 데이터베이스로 제한된 사용자는 SUPER, PROCESS, SHUTDOWN 및 이와 같은 권한이 필요하지 않습니다.
전역 권한을 가진 사용자를 생성하여 (따라서 사용자를 mysql.user
에 지정하면) 글로벌 권한 만 취소하여 사용자를 특정 데이터베이스로 강등시킬 수 없습니다. REVOKE 명령을 사용하려고하면 mysql.user
에 사용자가 표시되고 모든 열에 원래 Y 값이 있고 mysql.db
에 동일한 사용자가 있고 데이터베이스 특정 권한에 Y 값이 표시됩니다.
사용자를 완전히 삭제하고 더 낮은 권한으로 새로운 사용자를 만들어야합니다. 여기
은 GRANT 사용법은 단순히 당신이 (암호가 비어 있지 않은 경우) MD5 암호 인증과 관련된 어떤 알 수 있습니다 코멘트
mysql> show grants for [email protected]'%';
+-----------------------------------------------------------------------------+
| Grants for [email protected]% |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'advdb'@'%' IDENTIFIED BY PASSWORD '................' |
| GRANT ALL PRIVILEGES ON `advertpro`.* TO 'advdb'@'%' |
+-----------------------------------------------------------------------------+
에 따라 예입니다. advdb는 모든 IP 주소에서 로그인 할 수 있으며 advertpro 데이터베이스에만 액세스 할 수 있습니다.
사용자는 프로세스 목록의 모든 프로세스 (다른 프로세스에 속한 프로세스조차도)를 보지 않으려면 PROCESS 특권이 필요하지 않습니다.
사용자가 읽기 전용 mysql 인스턴스에 쓰기, 복제 시작 및 중지, zap 바이너리 로그 및 이와 같은 것들을 쓰지 않는 한 사용자는 SUPER 권한이 필요하지 않습니다.
사용자가 OS 명령 줄 사용자 mysqladmin 클라이언트 프로그램에서 mysql을 종료하지 않으려면 사용자에게 SHUTDOWN 권한이 필요하지 않습니다.
당신이 찾고있는 PRIV을 복사하려면,
SHOW GRANTS FOR 'user'@'xxx.xxx.xxx.%';
- 가 복사 텍스트 파일
- 편집 호스트로 출력
- 세미콜론을 추가 xxx.xxx.xxx.xx하는
- 다른 서버에 붙여 넣기
확인하자. 그 대답 :
UPDATE mysql.db
SET host='xxx.xxx.xxx.xxx'
WHERE user='myuser'
AND host='xxx.xxx.%'
AND db='somedb';
FLUSH PRIVILEGES;
이것은해야한다!
SQL에서 MySQL Grants를 덤프하려면 pt-show-grants
pt-show-grants을 사용하여 mysql 권한을 포팅하는 것이 훨씬 더 좋습니다.
여기에 무엇을 PT-쇼 보조금의 개인 에뮬레이션
mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A -e"SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user<>''" | mysql -hhostaddr -umyuserid -pmypassword --skip-column-names -A | sed 's/$/;/g' > MySQLUserGrants.sql
내 대답을 업데이트하지 않습니다입니다! – RolandoMySQLDBA