質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.49%

  • SQL

    2467questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • VPS

    359questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

  • cron

    173questions

    cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

sqlを定期的にバックアップコマンドに接続情報記載は危険でしょうか

解決済

回答 4

投稿

  • 評価
  • クリップ 1
  • VIEW 1,051

youten

score 21

###イタリックテキストお世話になります。
お詳しい方ご教授くだされば嬉しいです。

初心者ですが、さくらVPSサーバーの構築をし、
運用しています。
mysqlに日々蓄積されるデータをcronで、定期的にバックアップしたいと
下記のページを参考に設定を試みていますが、
http://knowledge.sakura.ad.jp/knowledge/4334/

======================================

 データベースのデータをエクスポートして

 /backup/wordpressdb_YYYYMMDD-HHMMSS.sql.gzとして保存します。

 青色の部分を修正してください。

eval "mysqldump -u root -ppassword データベース名 |gzip -c > /backup/wordpressdb_${datestr}.sql.gz"
if [ $? -ne 0 ]
then
    echo "[ERROR]mysqldump error."
    STATUS=1

fi

に接続情報を入れると、
Warning: Using a password on the command line interface can be insecure.
というエラーが出てしまいます。

調べた結果、コマンドに接続情報を記載するとセキュリティ的に危険というところまでたどり着きましたが、

上記のページでは、最終的に

chmod 755 /usr/local/bin/cmsbackup.sh

とし、rootユーザしか操作できないように設定しているので、
コマンドに接続情報を記載して、エラーが表示されても気にしなくて
よいでしょうか?

ちなみに、上記のページの通り設定すると、動作はするので、
エラーさえ気にしない(rootユーザしか操作できないパーミッションにして、コマンドに接続情報記載しても良いなら)この状態でいきたいと思います。

しかし、不安でしたので、質問させて頂きました。

何卒、宜しくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+6

Warning: Using a password on the command line interface can be insecure. 

rootでない一般ユーザーで、ps axuwwとかすると分かると思いますが、他のユーザーが実行中のプロセスのコマンドライン引数が見えます。
つまり、コマンドライン情報というのは、root権限を取られなくても、一般ユーザ権限を取られただけで漏れる情報です。共同利用のサーバーだと、まるっきり裸同然(商用の共用レンタルサーバーだと何か細工して見られなくしているかも)。
警告メッセージの内容はそういう意味です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

+2

バックアップスクリプトを盗まれても大丈夫か、バックアップスクリプトのあるサーバで root 権限を奪われても大丈夫か、など、データベースに格納している情報の重要度・機密性やサーバにログインできるユーザがどの程度信用できるか、などによって必要となるセキュリティレベルは異なってきます。mysqldump で警告が出るのは、もっとも安全側に倒した警告を出す、ということなのでしょう。

ちなみに、chmod 755 /usr/local/bin/cmsbackup.sh は、group/others に読込みと実行を許します。やるなら chmod 700 /usr/local/bin/cmsbackup.sh (あるいは 500)ではないでしょうか。 

あと、バックアップスクリプトの中で eval しているのはなぜでしょう。なくてよい気がしますが。終了ステータスの絡みでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

checkベストアンサー

0

MySQL5.6以上では、-pオプションでパスワードと記述すると

Warning: Using a password on the command line interface can be insecure.


という警告が出力されるようになっているようです。

理由は、以下のページの
"・ コマンド行で -pyour_pass または --password=your_pass オプションを使用します。"
という項に説明されている通り、入力したパスワードが他の人に見えてしまうためです。
https://dev.mysql.com/doc/refman/5.6/ja/password-security-user.html

対策は上のページでもいくつか紹介されていますが、
"・ パスワードをオプションファイルに保管します。"
という項で説明されている方法が最も手っ取り早いように思います。

ちなみに、

上記のページでは、最終的に

chmod 755 /usr/local/bin/cmsbackup.sh

とし、rootユーザしか操作できないように設定しているので、

については、セキュリティの観点からは全く意味がありません。
なぜなら、755では他のユーザーからの書き込みだけを禁止していて、読み取りと実行は可能な状態だからです。

"group"と"other"の権限は0に変更すべきです。
http://www.k4.dion.ne.jp/~mms/unix/linux_com/chmod.html

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

他の方が回答されているように、コマンドラインでパスワードを指定するのはあまり好ましくないと思うので、下記のような方法を用いると良いのではないかと思います。

 ~/.my.cnf

バックアップするユーザーの ~/.my.cnf を chmod 0600 などとして、下記のように作成しておけば、スクリプトにパスワードをベタ書きしなくても良くなります。

[mysqldump]
password = THIS IS PASSWORD

 ~/.mylogin.cnf

もしくは 5.6 以降なら ~/.mylogin.cnf を使うのも良いと思います。下記のコマンドを入力してパスワードを入力すると ~/.mylogin.cnf にパスワードが難読化されて記録されて、自動的に使用されるようになります。

mysql_config_editor set --user=USERNAME --password

ただ、難読化されているだけであって、このファイルからの複合は容易に可能だったと思います。

 ソケットピア証明書認証プラグイン

あるいは、使ったことないですけど「ソケットピア証明書認証プラグイン」を使えば、OSのログインユーザーと同じ名前のMySQLユーザーであればパスワード無しでログインすることができるようになります。

MySQL ソケットピア証明書認証プラグイン - @tmtms のメモ

この方法ならパスワードを 絶対にわからないような複雑で長い文字列 にすることができるので(パスワードを設定する人自身がパスワードを知っている必要がないので)、採用可能なら他の方法よりも安全だろうと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

関連した質問

  • 解決済

    mysql 特定のデータベースだけをバックアップしたい

    mysqlでバックアップを取りたいです。 バックアップを取る方法を教えていただけますか? 宜しくお願いします。

  • 解決済

    MySQLについて

    MySQLについて質問です。 MySQLにてテーブルを作成したところなのですが、テーブルを作成した際のCREATE文を拡張子sqlのファイルで提出してほしいといわれたのですが、メモ

  • 解決済

    FLASHBACK DATABASEとRMAN の関係

    みなさん、こんにちは ORACLEでバックアップの勉強をしているのですが、FLASHBACK DATABASE と RMAN とフラッシュリカバリ領域 の関係がわかりません。

  • 受付中

    PHPからMySQLのバックアップとリストア

    MySQLの特定のtableをバックアップ、リストアしたいと考えています。 現在、HeidSQLというツールを使用して実施しているのですが、端末が固定されてしまうため、Web画面

  • 解決済

    postgreSQLのデータベースへデータのインポート

    仕事の引き継ぎにて、postgreSQLを使うことになり質問させてください。 brew形式でpostgreSQLをインストールし、postgreSQLを使い始めました。 pos

  • 解決済

    mysqldumpでslow-log

    毎日mysqldumpでDBのバックアップを取っているのですが、バックアップ処理で投げられるSelect文がslow-logに記録されているようです。検討している方法は以下の2つ

  • 解決済

    外部からDBサーバのバックアップ

    表記の件につき質問いたします。 ウェブサーバ ┣PHP ┗phpMyAdmin データベースサーバ ┗MySQLのみ 上記2台の構成で、ウェブサーバからDB

  • 解決済

    Cloud SQLでデータを正しくインポートできない

    前提・実現したいこと GCP(Compute Engine + SQL)でウェブサイトを構築しています。 既存のSQLインスタンスのデータをエクスポートし、新しく作成したSQL

同じタグがついた質問を見る

  • SQL

    2467questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

  • VPS

    359questions

    VPS(バーチャル・プライベート・サーバ)は、仮想化されたサーバをレンタルするサービスで、共有サーバでありながら専門サーバと同等の機能を果たします。物理的な専門サーバより安価で提供できるメリットがあります。

  • cron

    173questions

    cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。