【发布时间】:2023-04-06 17:54:01
【问题描述】:
根据这个link,我执行了这个命令来备份我的数据库:
xtrabackup --backup --databases='database' --target-dir=/home/user/backups --datadir=/var/lib/mysql/
但我收到以下错误:
160520 02:00:54 version_check Done.
160520 02:00:54 Connecting to MySQL server host: localhost, user: root, password: set, port: 0, socket: /var/lib/mysql/mysql.sock
Using server version 5.5.44-MariaDB
xtrabackup version 2.4.2 based on MySQL server 5.7.11 Linux (x86_64) (revision id: 8e86a84)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /var/lib/mysql/
xtrabackup: open files limit requested 0, set to 1024
xtrabackup: using the following InnoDB configuration:
xtrabackup: innodb_data_home_dir = .
xtrabackup: innodb_data_file_path = ibdata1:10M:autoextend
xtrabackup: innodb_log_group_home_dir = .
xtrabackup: innodb_log_files_in_group = 2
xtrabackup: innodb_log_file_size = 5242880
InnoDB: Number of pools: 1
InnoDB: Operating system error number 13 in a file operation.
InnoDB: The error means mysqld does not have the access rights to the directory.
我通过使用 sudo 运行相同的命令解决了这个问题,问题是备份目录是以 root 身份创建的,所以我的用户无权访问该目录,所以我总是必须递归地更改该目录的所有权,所以我可以阅读它。这种方法对我来说不是很有效。
- 还有其他替代方法吗?
- 我总是必须 用 sudo 执行这个命令?
【问题讨论】:
-
您是否尝试过使用拥有数据库文件的同一用户来运行它?通常是
mysql。 -
我想做的是和我的用户一起运行它。
-
您想要什么和 UNIX 权限允许什么可能是两件不同的事情。数据库应该受到保护。
-
@tadman 你有什么推荐的?
-
不要与权限系统抗争并使用它。让
mysql用户为您完成备份工作并将其转储到您有权访问的目录中。使用cron很容易做到这一点。