web-dev-qa-db-ja.com

MySQLでログファイルを確認する方法

私はMysqlサーバーがすべてのアクティビティの記録を保存するログファイルを作成することを読みました。

誰が私のシステムのどこに存在するのか教えてもらえますか?どうやって読むことができますか?

基本的に、私は異なる入力でデータベースをバックアップする必要があります[2つの日付間のバックアップ]それで私はここでログファイルを使用する必要があると思います、それが私がそれをしたい理由です...

ユーザー名やパスワードなどの機密情報がログに記録される可能性があるため、このログは何らかの方法で保護する必要があると思います。簡単に見えないように固定されていませんか。

システムへのrootアクセス権がありますが、どうすればログを見ることができますか?

/var/log/mysql.logを開こうとすると、空です。

これは私の設定ファイルです:

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock

[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
Nice        = 0

[mysqld]
log = /var/log/mysql/mysql.log 
binlog-do-db=zero



user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /var/lib/mysql
tmpdir      = /tmp
skip-external-locking

bind-address        = 127.0.0.1
#
# * Fine Tuning
#
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1
154
Arjun

これを有効にする簡単な方法は次のとおりです。 mysqlでは、3つのログを頻繁に見て、プロジェクトの開発中に必要となることがほとんどです。

  • The Error Log。サーバーの実行中に発生したエラーに関する情報(サーバーの起動と停止も含まれます)

  • The General Query Log。これは、mysqldが行っていること(接続、切断、クエリ)の一般的な記録です。

  • The Slow Query Log。 (名前が示すように)「遅い」SQL文で構成されます。

デフォルトではMYSQLではログファイルは有効になっていません。すべてのエラーはsyslogに表示されます(/ var/log/syslog)。

有効にするには、以下の手順に従ってください。

step1:このファイル(/ etc/mysql/conf.d/mysqld_safe_syslog.cnf)に移動し、それらの行を削除またはコメントします。 。

step2:mysql設定ファイル(/etc/mysql/my.cnf)に行き、以下の行を追加してください。

エラーログを有効にするには以下を追加してください

[mysqld_safe]
log_error=/var/log/mysql/mysql_error.log

[mysqld]
log_error=/var/log/mysql/mysql_error.log

一般的なクエリログを有効にするには、以下を追加してください

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

スロークエリログを有効にするには、次の行を追加してください

log_slow_queries       = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

step3:ファイルを保存し、以下のコマンドを使用してmysqlを再起動します。

service mysql restart

実行時にログを有効にするには、mysqlクライアントにログインし(mysql -u root -p)、次のようにします。

SET GLOBAL general_log = 'ON';
SET GLOBAL slow_query_log = 'ON';

最後にここで言及したいのは、ブログからこれを読むことです。ありがとう。わたしにはできる。

ブログにアクセスするには、 ここ をクリックしてください。

139
loyola

Mysqlでクエリロギングを有効にする必要があります。

1.edit /etc/my.cnf

 [mysqld] 
 log =/tmp/mysql.log 

2.コンピュータまたはmysqldサービスを再起動します。

 service mysqld restart 

3. phpmyadmin/mysql/mysqlコンソールを使用してクエリを実行するアプリケーションを開きます。

4.cat /tmp/mysql.log(クエリが表示されるはずです)

42
danidacar

MySQLログは以下のようなグローバル変数によって決定されます。

  • log_error エラーメッセージログ用。
  • general_log_file 一般的なクエリログファイルの場合(general_logによって有効にされている場合)。
  • slow_query_log_file スロークエリログファイルの場合(slow_query_logで有効にした場合);

設定とその場所を確認するには、次のシェルコマンドを実行します。

mysql -se "SHOW VARIABLES" | grep -e log_error -e general_log -e slow_query_log

エラーログの値を表示するには、端末で次のコマンドを実行します。

mysql -e "SELECT @@GLOBAL.log_error"

エラーログファイルの内容をリアルタイムで読み取るには、次のコマンドを実行します。

Sudo tail -f $(mysql -Nse "SELECT @@GLOBAL.log_error")

注:ヒット Control - C 終わったら

一般ログが有効になったら、試してください。

Sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")

パスワードアクセスでmysqlを使用するには、-pまたは-pMYPASSパラメータを追加します。それを覚えておくために、あなたはあなたの~/.my.cnfでそれを設定することができます。

[client]
user=root
password=root

だからそれは次回のために覚えているでしょう。

30
kenorb

私の(LAMPをインストールした)/etc/mysql/my.cnfファイルの中で、[mysqld]セクションの次のコメント行を見つけました。

general_log_file        = /var/log/mysql/mysql.log
general_log             = 1

私は端末を使ってスーパーユーザーとしてこのファイルを開かなければなりませんでした:

Sudo geany /etc/mysql/my.cnf

(私はgeditやVIの代わりにGeanyを使うことを好みます、それは問題ではありません)

コメントを外してファイルを保存してからmysqlを再度追加します。

Sudo service mysql restart

いくつかのクエリを実行し、上記のファイル(/var/log/mysql/mysql.log)を開くと、ログはそこにありました:)

9
Line

MySQLのリファレンスマニュアルより:

デフォルトでは、すべてのログファイルはデータディレクトリに作成されます。

/var/lib/mysqlフォルダを確認してください。

8
Mark Nenadov

loyola の答えを補足するために、MySQL 5.1ではlog_slow_queriesは非推奨となり、slow-query-logに置き換えられました

log_slow_queriesを使用すると、service mysql restartまたはservice mysql startが失敗します。

3
Shell> mysqladmin flush-logs


Shell> mv Host_name.err-old backup-directory
1
Test

上記の回答に加えて、confファイルを手動で編集する代わりに、オプションをログに記録するためにmysqldプロセスにコマンドラインパラメータを渡すことができます。たとえば、一般的なロギングを有効にしてファイルを指定するには、次のようにします。

mysqld --general-log --general-log-file=/var/log/mysql.general.log

上記の他の答えを確認すると、mysqld --help --verboseはconfファイルからの値を与えます(そのため、コマンドラインオプションgeneral-logで実行するのはFALSEです)。 mysql -se "SHOW VARIABLES" | grep -e log_error -e general_logは次のようになります。

general_log     ON
general_log_file        /var/log/mysql.general.log

エラーログには、もう少しコンパクトな構文を使用してください。

mysqld --general-log --general-log-file=/var/log/mysql.general.log --log-error=/var/log/mysql.error.log
1
br3w5