PHPスクリプトでmysqldumpを実行するcronジョブを実行しています。ダンプにはRELOAD権限が必要です。 MySQL管理者アカウントを使用するのは気分が悪いですが、管理者特権を持つユーザを作成することもありません。PHPのcronジョブ中にmysqldumpのMySQLリロード権限:MySQL管理者アカウントを使用するか、一意のユーザーを作成しますか?セキュリティ?
私の主な関心事はセキュリティの側面です。使用しているクラスの保護された配列の "プロパティ"にdb属性(ユーザー名、パスワードなど)をロードします。
どちらのアプローチが理にかなっているのか、同じ結果を達成する別の方法があるのだろうかと思います。
概要:
LAMPサーバー:CentOSの5.8は、Apache 2.2.3、MySQLの5.0.95、PHP 5.3.3
cronジョブの概要:
- 生の統計情報をダンプウェブサイトdb内の2つのInnoDBテーブルからのデータ、 には、外部キーの関係があります。
- は、ウェブサイトからコピーしたデータ を削除し、クエリの主キーの値を使用し
- を移し、自動インクリメントの主キーの最後の値を取得する統計情報の表にデシベル
- データを読み込み統計で転送されるデータは、処理が完了すると、統計情報からデシベル
ウェブサイトデータベースはバイナリロギングのマスターとして設定されており、統計データがWebサイトデータベースに格納されて処理されなくなると複製されたサーバーがセットアップされます(ウェブサイトデータベースの複製は統計情報を自分のデータベース)。
cronジョブでアクセスされるすべてのファイルは、DocumentRootディレクトリの外にあります。
核心:
最初のステップで実行mysqldumpをはRELOAD権限を必要とし、ここではコマンドです:
<?php
$SQL1 = "--no-create-info --routines --triggers --master-data ";
$SQL1 .= "--single-transaction --quick --add-locks --default-character-set=utf8 ";
$SQL1 .= "--compress --tables stats_event stats_event_attributes";
$OUTPUT_FILENAME = "/var/stats/daily/daily-stats-18.tar.gz";
$cmd1 = "/usr/bin/mysqldump -u website_user -pXXXXXX website_db $SQL1 | gzip -9 > $OUTPUT_FILENAME";
exec($cmd1);
?>
エラーメッセージ:
mysqldump: Couldn't execute 'FLUSH TABLES': Access denied; you need the RELOAD privilege for this operation (1227)
mysql管理者の資格情報を使用すると正常に動作します。
を私は他のすべての組み合わせよりも、彼らはより多くのスペースを取るし、処理は、時には物事をダウン湿原ので、それがウェブサイトのデータベースのためだ、我々は最初のオフの統計を移動したい、レプリケーションについて明確ではありませんでした。統計情報のダンプを保存しようとすると、報告が少し遅れてしまうことは重要ではありません。だから一時的ではない。私の懸念事項は何よりもセキュリティに関するものだと思うが、私はその質問にそれを強調する。特にセキュリティに関する考え? – codewaggle
私は盲目的には、これがコンテキストからの共有ホスティングにないと仮定しています。ユーザーが目的のホストからのみ接続でき、安全なパスワードを選択できることを確認しますか?おそらく、ここには本当の脅威はありません。 – Charles
ちょうど私が聞きたかったもの。私たちはサーバーを所有しており、ユーザーを@localhostに設定すると考えました。統計情報を別のサーバーに移動することを考えていましたが、ローカルホストは今のところ動作します。 – codewaggle