mysqlbackup을 실행하려면 루트로 실행해야 합니다.
다음은 일반 사용자로 실행할 때의 예입니다.
mysqlbackup --compress --user=root --socket=/var/lib/mysql/mysql.sock --backup-dir=/home/user/backup backup
MySQL Enterprise Backup version 3.12.2 Linux-2.6.32-400.37.11.el6uek.i686-i686 [2016/01/19]
Copyright (c) 2003, 2016, Oracle and/or its affiliates. All Rights Reserved.
mysqlbackup: INFO: Starting with following command line ...
mysqlbackup --compress --user=root --socket=/var/lib/mysql/mysql.sock
--backup-dir=/home/user/backup backup
mysqlbackup: INFO:
mysqlbackup: INFO: MySQL server version is '5.5.44-MariaDB'.
mysqlbackup: INFO: Got some server configuration information from running server.
IMPORTANT: Please check that mysqlbackup run completes successfully.
At the end of a successful 'backup' run mysqlbackup
prints "mysqlbackup completed OK!".
160226 08:30:02 mysqlbackup: INFO: MEB logfile created at /home/user/backup/meta/MEB_2016-02-26.08-30-02_compress_backup.log
mysqlbackup: ERROR: Opening of file /var/lib/mysql/ibdata1 failed. Error code: 13, Permission denied
이로 인해 권한 거부가 발생하므로 sudo를 사용하여 실행하려고 하면 다음과 같은 결과가 나타납니다.
sudo mysqlbackup
[sudo] password for user:
sudo: mysqlbackup: command not found
하지만 루트로 실행하면 아무런 문제가 없습니다 ...
내 사용자가 sudoers 파일 안에 있으므로 아무 문제 없이 sudo를 사용하여 다른 명령을 실행할 수도 있다는 것을 알고 있지만 이 경우 내 질문은 왜 sudo를 사용하여 실행할 수 없고 어떻게 실행할 수 있는지입니다. 재사용할 필요가 없습니다. sudo -i 루트 환경을 얻으려면?
노트: 모두 동일한 $PATH를 가집니다.
[root@localhost ~]# echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/.local/bin:/home/user/bin
[root@localhost ~]# exit
[user@localhost backup]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/user/.local/bin:/home/user/bin
답변1
아마도 secure_path
/etc/sudoers에 설정되어 있을 것입니다. 표시된 경로는 which mysqlbackup
거기에 포함되어 있지 않지만 echo $PATH
사용자로 실행하거나 루트에서 로그인하면 표시됩니다. 그렇죠? 그래도 이상해 보입니다.
답변2
따라서 일반 사용자로서 백업이 실패하는 이유는 복사/백업하려는 libdata
파일이 mysqlbackup
다른 사용자(대부분 "mysql") 또는 권한이 있는 사용자가 소유하고 있기 때문입니다. 따라서 mysqlbackup
이 작업을 시도할 때는 관리자 권한으로 실행하는 것이 올바른 선택일 수 있습니다.
mysqlbackup
파워 유저로서 찾지 못하는 이유는 PATH
환경이 잘못 설정되었거나 전혀 설정되지 않았기 때문이라고 추측하고 있습니다. 다음과 같은 작업을 수행할 수 없다고 가정하는 것이 맞습니까?
sudo /usr/bin/mysqldump --compr....
가능하다면 절대 경로를 사용하여 명령을 실행하십시오 mysqldump
. 구성된 방식으로 인해 작동하지 않으면 sudo
다른 전략을 시도해야 합니다.
PATH=/usr/bin sudo mysqlbackup --compress ...
이것이 효과가 있다면 좋을 것입니다. 그러나 이는 향후 명령줄 사용에는 적합하지 않습니다. 나중에 사용할 명령줄에서 PATH를 지정할 필요가 없도록 alias
나중에 실행할 항목을 만들 수 있습니다 .mysqlbackup
배쉬의 경우:
(예를 들어 다른 쉘의 경우 zsh
별칭 설정 방법에 대한 문서를 읽어야 합니다.)
echo 'alias mysqlbackup="PATH=/usr/bin sudo mysqlbackup"' >> ~/.bashrc
.bashrc
...파일을 얻은 후(로그아웃 및 로그인으로 충분하거나 IE 파일을 얻은 후 . ~/.bashrc
) 나중에 간단히 다음을 실행하여 호출할 수 있습니다.
mysqlbackup --compress...
하지만 이 중 아무 것도 작동하지 않는다고 가정해 보겠습니다. mysqlbackup
올바른 PATH를 포함하도록 sudo 권한을 변경하거나 mysqlbackup
실행 시 쉘에서 호출할 수 있도록 sudoers 파일에 절대 경로를 지정하도록 컴퓨터 관리자에게 요청해야 할 수도 있습니다 sudo
.
도움이 되었기를 바랍니다.