mysqldump를 사용하여 백업 목적으로 읽기 전용 MySQL 사용자를 작성하는 방법


14

automysqlbackup스크립트를 사용하여 mysql 데이터베이스를 덤프하고 있지만 루트 데이터베이스 비밀번호를 일반 텍스트 파일에 저장하지 않도록 읽기 전용 사용자 가이 작업을 수행하려고합니다.

다음과 같이 사용자를 만들었습니다.

grant select, lock tables on *.* to 'username'@'localhost' identified by 'password';

mysqldump(통과 automysqlbackup또는 직접) 실행 하면 다음 경고가 표시됩니다.

mysqldump: Got error: 1044: Access denied for user 'username'@'localhost' to database 'information_schema' when using LOCK TABLES

내가 잘못하고 있습니까? 내 읽기 전용 사용자에게 추가 지원이 필요합니까? 아니면 테이블 만 root잠글 수 information_schema있습니까? 무슨 일이야?

편집하다:

GAH와 지금은 작동합니다. FLUSH PRIVILEGES를 이전에 실행하지 않았을 수 있습니다.

옆으로, 얼마나 자주 자동으로 발생합니까?

편집하다:

아니요, 작동하지 않습니다. mysqldump -u username -p --all-databases > dump.sql수동으로 실행 해도 오류는 발생하지 않지만 information_schema는 덤프하지 않습니다. automysqlbackup오류가 발생합니다.


죄송합니다. 맨 페이지에서 mysqldump: mysqldump가 INFORMATION_SCHEMA 데이터베이스를 덤프하지 않습니다. 명령 행에서 해당 데이터베이스의 이름을 명시 적으로 지정하면, mysqldump는 자동으로 데이터베이스를 무시합니다. man 페이지가 오래되었거나 (경고가 발생 함) 또는 automysqlbackup에 대한 덤프에서 추가 검사를 수행하는 것 같습니다 information_schema. 어느 것이 확실하지 않지만 사용자 보조금과 관련이 없습니다.
stickmangumby

1
중대한 문제가 아닙니다. 당신은 백업 INFORMATION_SCHEMA 할 필요가 없습니다 (참조 : dev.mysql.com/doc/refman/5.0/en/information-schema.html )
SmallClanger

1
SmallClanger가 말한 것에 추가하여 INFORMATION_SCHEMA는 가상 데이터베이스이며 MySQL이 다시 시작될 때마다 다시 작성되므로 백업 할 수 없기 때문에 복구 할 수 없습니다.
John Gardeniers

답변:


4

이러한 권한은 mysqldump에 필요한 모든 것이어야합니다.

LOCK TABLES를 부여했으며 LOCK TABLES에서 오류가 발생하여 권한이 일치하지 않는 것 같습니다. 당신은 실행 FLUSH PRIVILEGES합니까?


1

죄송합니다. 맨 페이지에서 mysqldump:

mysqldump does not dump the INFORMATION_SCHEMA database. If you name that database explicitly on the command line, mysqldump silently ignores it

매뉴얼 페이지가 오래되었거나 경고를 발생시키는 것처럼 보이거나 automysqlbackup덤프에서 추가 검사를 수행하고있는 것 같습니다 information_schema.

어느 것이 확실하지 않지만 사용자 보조금과 관련이 없습니다.

편집하다

그렇습니다. automysqlbackup버전 2.5.1 (Ubuntu 10.04에서 MySQL 5.1.41 사용) 의 버그 이므로 백업 information_schema하면 안됩니다.

FIX는 : 추가 information_schema로에 DBEXCLUDE스크립트의 라인 76에.


중대한 문제가 아닙니다. 당신은 백업 INFORMATION_SCHEMA 할 필요가 없습니다 (참조 : dev.mysql.com/doc/refman/5.0/en/information-schema.html )
SmallClanger

SmallClanger가 말한 것에 추가하여 INFORMATION_SCHEMA는 가상 데이터베이스이며 MySQL이 다시 시작될 때마다 다시 작성되므로 백업 할 수 없기 때문에 복구 할 수 없습니다.
John Gardeniers

0

사용자 생성

GRANT USAGE ON *.* TO 'dump'@'localhost' IDENTIFIED BY 'plaintext-pass';
GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `my-db`.* TO 'dump'@'localhost';

권한 확인

mysql> SHOW GRANTS FOR dump@'localhost';
+-----------------------------------------------------------------------------------------------+
| Grants for dump@localhost                                                                     |
+-----------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dump'@'localhost'                                                      |
| GRANT SELECT, LOCK TABLES, SHOW VIEW, EVENT, TRIGGER ON `my-db`.* TO 'dump'@'localhost' |
+-----------------------------------------------------------------------------------------------+

파일을 생성을 yor 좋아하는 편집기를 사용 ~/.my.cnf하여chmod 400

[client]
user=dump
password=plaintext-pass

예제와 같이 덤프 용 폴더 만들기

mkdir ~/db-dumps

작동하는지 확인

mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/manual-my-db-dump-`date +%F`.sql.gz

선택적으로 덤프 dailyweekly만든 daily다음 달보다 오래된 모든 것을 제거 할 수 있습니다

#m h  dom mon dow   command
0  3  *   *   0,2-6 /usr/bin/mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/daily-my-db-dump-`date +%F`.sql.gz;
0  3  *   *   1     /usr/bin/mysqldump -u dump --hex-blob --routines --triggers my-db | gzip > ~/db-dumps/weekly-my-db-dump-`date +%F`.sql.gz;
0  4  *   *   *     /usr/bin/find ~/db-dumps/ -name "daily-*" -type f -mtime +30 -exec rm -f {} \;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.