このスレッドは未解決です(解決したらこちらで解決済にしてください)
<<戻る

MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/19(Sat) 14:39
名前: ミッキー
URL:
お世話になります。
centos6.7でこちらに書かれているように
mysql、MySQLデータベース自動バックアップ運用(mysqldump)をしています。
先日、mysqlを5.2から5.7にバージョンアップした所、
バックアップ毎に以下のメールが送られてきます。

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

netで知らべるとバージョン5.6以降はセキュリティの為、コマンドラインからパスワード入力をしないように!という注意文だというものです。
バックアップ自体は問題なく出来ているのですが、このメールを止める対応がわかりません。
是非、ご教授の方をお願いします。
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/19(Sat) 15:53
名前: bbb
URL:
標準エラーと出力を/dev/nullにすてちまえばとおもったけど、
ここの解決方法のほうがいいかな。
解決方法が二つ載ってます。

http://readit.l8r.in/post-438/
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/19(Sat) 16:58
名前: stranger
URL: http://ja.528p.com/
MySQL5.6以上では mysql_config_editor というものがあるようです
設定ファイルのpasswordの部分を暗号化してくれるらしい

http://yoku0825.blogspot.jp/2012/10/mysql56-mylogincnf.html
http://dev.mysql.com/doc/refman/5.6/en/mysql-config-editor.html
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/19(Sat) 18:11
名前: ミッキー
URL:
bbbさん、strangerさん
ありがとうございます。
教えて頂いたのを読み、自分なりの理解で真似をして以下を考えたのですが
まったく上手くいきませんでした。
どこが悪いのか教えて頂けたら幸いです。

#!/bin/bash

# 接続情報をファイルに一時出力
MYSQLCLIENT_CNF=`mktemp`
echo "[client]" >> $MYSQLCLIENT_CNF
echo "user = admin" >> $MYSQLCLIENT_CNF
echo "password = *******" >> $MYSQLCLIENT_CNF
echo "host = localhost" >> $MYSQLCLIENT_CNF
# echo $MYSQLCLIENT_CNF

# 上記の接続情報をもとに、以下のスクリプトファイルを実行する。
mysql --defaults-extra-file=$MYSQLCLIENT_CNF --comments --all < /usr/local/sbin:/usr/bin:/bin

# 接続情報ファイルの削除
rm -rf $MYSQLCLIENT_CNF
exit
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/20(Sun) 06:26
名前: stranger
URL: http://ja.528p.com/
テキストファイルから SQL ステートメントを実行する書式
shell> mysql db_name < text_file

--comments --all < /usr/local/sbin:/usr/bin:/bin
の部分がちがうのでは?

--commentsオプション
サーバーに送信されたステートメント内のコメントを保持するかどうかを指定します。
デフォルトは --skip-comments (コメントを破棄) であり
--comments (コメントを保持) で有効になります。

--allの部分は (db_name)データベース名
テキストファイルの最初のステートメントとして USE db_name ステートメントを配置する場合
コマンド行でデータベース名を指定する必要はない

< text_file
SQLステートメントのかかれたファイルをパス付きで指定
絶対パスで指定すれば間違わないと思う

日本語マニュアル
https://dev.mysql.com/doc/refman/5.6/ja/programs-client.html

追記
bbbさんの書かれているようにこれはmysqldumpじゃないですね
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/20(Sun) 08:27
名前: bbb
URL:
mysqlコマンドも間違い。mysqldumpコマンド。
どのようにmysqldumpをつかっていたかしらないけど、
mysqldump --defaults-extra-file=$MYSQLCLIENT_CNF database > database.db
こんな風にすればいいんじゃない?
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/20(Sun) 10:54
名前: ミッキー
URL:
strangerさん、bbbさん
いろいろありがとうござます。
意見を参考にしたのですが
知識不足の上、完全に勘違いでエラー続出になってしまいました!泣

試したものを貼らせていただきます。

ひとつめ、

!/bin/sh

# 接続情報をファイルに一時出力
MYSQLCLIENT_CNF=`mktemp`
echo "user = admin" >> $MYSQLCLIENT_CNF
echo "password = ******" >> $MYSQLCLIENT_CNF
# echo $MYSQLCLIENT_CNF

# 他のユーザからバックアップを読み込めないようにする
umask 077

# バックアップファイルを何日分残しておくか(一ヶ月分)
period=3
# バックアップファイルを保存するディレクトリ
dirpath='/backup/mysql'

# ファイル名を定義(※ファイル名で日付がわかるようにしておきます)
filename=`date +%y%m%d`

# mysqldump実行(ファイルサイズ圧縮の為gzで圧縮しておきます。)
mysqldump --defaults-extra-file=$MYSQLCLIENT_CNF database > | gzip -9 > alldb.sql.gz > /dev/null

# 古いバックアップファイルを削除
"mysql-backup.sh" 25L, 874C


error: Found option without preceding group in config file: /tmp/tmp.DKxETV1Pzl at line: 1

ふたつめ、

!/bin/sh

# 接続情報をファイルに一時出力
MYSQLCLIENT_CNF=`mktemp`
echo "user = admin" >> $MYSQLCLIENT_CNF
echo "password = ******" >> $MYSQLCLIENT_CNF
# echo $MYSQLCLIENT_CNF

# 他のユーザからバックアップを読み込めないようにする
umask 077

# バックアップファイルを何日分残しておくか(一ヶ月分)
period=3
# バックアップファイルを保存するディレクトリ
dirpath='/backup/mysql'

# ファイル名を定義(※ファイル名で日付がわかるようにしておきます)
filename=`date +%y%m%d`

# mysqldump実行(ファイルサイズ圧縮の為gzで圧縮しておきます。)
mysqldump --defaults-extra-file=$MYSQLCLIENT_CNF database > database.db

# 古いバックアップファイルを削除
"mysql-backup.sh" 25L, 874C

./mysql-backup.sh: line 4: mktemp: コマンドが見つかりません
./mysql-backup.sh: line 5: $MYSQLCLIENT_CNF: ambiguous redirect
./mysql-backup.sh: line 6: $MYSQLCLIENT_CNF: ambiguous redirect
mysqldump: Got error: 1045: Access denied for user 'root'@'localhost' (using password: NO) when trying to connect
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/20(Sun) 15:45
名前: stranger
URL: http://ja.528p.com/
簡単につくってみた 至らない部分は 自分で修正してください
#!/bin/bash #!が必要
[client]はmysqlの区分 必要
rm -f が怖い ハックされると時間と共にファイルが消滅する
rootを取られたら簡単に消滅させられるからいいか
mysql 5.5 でも動くよ
--------------------------------------------------

#!/bin/bash

# 接続情報をファイルに一時出力
MYSQLCLIENT_CNF=`mktemp`
echo "[client]" >> $MYSQLCLIENT_CNF
echo "user = admin" >> $MYSQLCLIENT_CNF
echo "password = ******" >> $MYSQLCLIENT_CNF

# 保存先の作成 (存在すればエラーを返さない)
BAKUPDIR=/backup/mysql
mkdir -p $BAKUPDIR

# mysqldump実行 (mysqldumpにパスを通す 出力例 database20160320)
MYSQLDUMP=/usr/local/mysql/bin/mysqldump
$MYSQLDUMP --defaults-extra-file=$MYSQLCLIENT_CNF database > $BAKUPDIR/database`date +%Y%m%d`

# 古いバックアップファイルを削除 (30日以上前)
find $BAKUPDIR -name 'database*' -mtime +30 -exec rm -f {} \;

#最後にtmpファイルを削除
rm -f $MYSQLCLIENT_CNF
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/20(Sun) 22:40
名前: ミッキー
URL:
strangerさん、
ありがとうございます。
mysqldumpのパスだけは=/usr/bin/mysqldumpと変えましたが
完璧に動きました

古いデータが無いので
mysqldump: Got error: 1049: Unknown database 'database' when selecting the database
こういったエラーは出ますが、
当初問題にしていた
Warning: Using a password on the command line interface can be insecure.
は無くなりました。

本当にありがとうございます、とても勉強になりました。
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/21(Mon) 05:53
名前: stranger
URL: http://ja.528p.com/
databaseは仮の名前ですよ
実際にはバックアップをするmysqlのデータベース名を入れます

スクリプトの最後に
MYSQLCLIENT_CNFを削除しないと/tmpに残ります
rm -f $MYSQLCLIENT_CNF
記事編集 編集
Re: MySQLバックアップ運用での注意メール このメッセージに返信する
日時: 2016/03/21(Mon) 09:03
名前: ミッキー
URL:
strangerさん、
重ねてありがとうございます。
今後ともよろしくお願いします。
記事編集 編集
件名※必須
名前※必須
URL
任意のパスワード (投稿後のコメント修正・削除時に使用)
画像認証※必須 投稿キー(画像で表示されている数字を入力)
コメント※必須

※質問を投稿後に自己解決された場合は、原因と行った対処を具体的に書き込み下さるよう、よろしくお願いします。

- WEB PATIO -