db/mysql

Access denied; SUPER privilege(s) for this operation

C/H 2018. 4. 23. 11:49

gunzip < back.20180423.data.gz | mysql -uusername -p -f datbasename 
Enter Password: 
ERROR 1227 (42000) at line 279: Access denied; you need (at least one of) the SUPER privilege(s) for this operation

failure cause 원인 파악?

  • working server에서 mysqldump를 이용 원격지 db 백업
  • 원격백업이 가능하기 위해서는 username@% 권한이 필요함.
  • 백업된 log 파일에는 DEFINER='username'@'%' 형태로 사용자@호스트 정보가 적용됨
  • 이를 원격지 백업 db에 사용할 경우 문제가 없지만, 로컬백업 db에 밀어넣으면 SUPER privilege(s) 에러 발생
  • username@%username@localhost host권한이 다름.

How to grant super privilege to the user? 에서는 이를 해결하기 위해서 mysql.user.Super_priv 값을 'Y'로 변경하면 해결되지만 권한남용(?)에 대해서 우려를 표현함.

Solutions 또 다른 대응법은

  • 백업 파일에서 DEFINER='username'@'%' >>> DEFINER='username'@'localhost' 변경후 복원한다.
  • -h옵션으로 로컬호스트에 연결된 도메인으로 설정하면 usename@%를 사용한다.
  • db서버에서 mysqldump로 작업후 그 결과물을 백업db 서버에 download받은 후 복원한다.
반응형