
mysqlbackupを実行するには、rootとして実行する必要があります。
以下は、一般ユーザーとして実行する場合の例です。
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
しかし、rootとして実行しても問題はありません...
私のユーザーは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
ユーザーとして実行したり、rootからログインしたときに表示されます。そうですか?それでも変に見えます。
答え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
。
お役に立てば幸いです。