MySQLのログを有効にする方法は?


36

OS X 10.6.1でMySQL 5.0.45を実行していますが、MySQLにログを記録させることができません。アプリケーションをデバッグしていますが、すべてのクエリとエラーを確認する必要があります。

etc / my.cnfに追加しました:

[mysqld]
bind-address = 127.0.0.1
log = /var/log/mysqld.log
log-error = /var/log/mysqld.error.log

sudoを使用して2つのログファイルを作成し、パーミッションを644に設定してから、MySQLを再起動しました。

私は言及私のmysqlのログは、OS X上ではどこ?トラブルシューティングするため。

ランニング:

ps auxww|grep [m]ysqld

戻り値:

_mysql      71   0.0  0.8   646996  15996   ??  S     7:31PM   0:01.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --pid-file=/usr/local/mysql/var/Macintosh-41.local.pid
_mysql      46   0.0  0.0   600336    744   ??  Ss    7:30PM   0:00.03 /bin/sh /usr/local/mysql/bin/mysqld_safe

そして実行中:

$(ps auxww|sed -n '/sed -n/d;/mysqld /{s/.* \([^ ]*mysqld\) .*/\1/;p;}') --verbose --help|grep '^log'

戻り値:

log                               /var/log/mysqld.log
log-bin                           (No default value)
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /var/log/mysqld.error.log
log-isam                          myisam.log
log-queries-not-using-indexes     FALSE
log-short-format                  FALSE
log-slave-updates                 FALSE
log-slow-admin-statements         FALSE
log-slow-queries                  (No default value)
log-tc                            tc.log
log-tc-size                       24576
log-update                        (No default value)
log-warnings                      1

ランニング:

mysql> show variables like '%log%';

戻り値:

+---------------------------------+---------------------------+
| Variable_name                   | Value                     |
+---------------------------------+---------------------------+
| back_log                        | 50                        | 
| binlog_cache_size               | 32768                     | 
| expire_logs_days                | 0                         | 
| innodb_flush_log_at_trx_commit  | 1                         | 
| innodb_locks_unsafe_for_binlog  | OFF                       | 
| innodb_log_arch_dir             |                           | 
| innodb_log_archive              | OFF                       | 
| innodb_log_buffer_size          | 1048576                   | 
| innodb_log_file_size            | 5242880                   | 
| innodb_log_files_in_group       | 2                         | 
| innodb_log_group_home_dir       | ./                        | 
| innodb_mirrored_log_groups      | 1                         | 
| log                             | ON                        | 
| log_bin                         | OFF                       | 
| log_bin_trust_function_creators | OFF                       | 
| log_error                       | /var/log/mysqld.error.log | 
| log_queries_not_using_indexes   | OFF                       | 
| log_slave_updates               | OFF                       | 
| log_slow_queries                | OFF                       | 
| log_warnings                    | 1                         | 
| max_binlog_cache_size           | 4294967295                | 
| max_binlog_size                 | 1073741824                | 
| max_relay_log_size              | 0                         | 
| relay_log_purge                 | ON                        | 
| relay_log_space_limit           | 0                         | 
| sync_binlog                     | 0                         | 
+---------------------------------+---------------------------+
26 rows in set (0.00 sec)

MySQLをログに記録する方法に関するヘルプはありますか?

回答:


23

を使用した場合でも、chmod 644mysqlがログの所有者であることを確認してください。

touch /var/log/mysql.log
chown mysql:mysql /var/log/mysql.log
touch /var/log/mysql.error.log
chown mysql:mysql /var/log/mysql.error.log

次に、mysqldを再起動します。

次に、mysqlにログインして実行します。

mysql> show variables like '%log%';

値を見てgeneral_loggeneral_log_fileloglog_error、など

必要に応じてスイッチをオンにし、必要に応じてmysqladmin flushlogsを実行します。


ロギング中。所有権の監視されている必要があります。ただし、「 '%log%'のような変数を表示する」クエリの結果については、編集した質問を参照してください。MySQLは/var/log/mysql.logにログを記録しているのに、なぜ表示されないのですか?
RyOnLife

13

ログファイルを有効にするには、次のディレクティブの1つ以上が[mysqld]mysqlサーバーのメイン構成ファイル(/etc/my.cnf私の場合)のセクションにあることを確認する必要があります。

[mysqld]
log-bin
log
log-error
log-slow-queries

デフォルトでは、ログはデータベースサブディレクトリ自体(通常/var/lib/mysql)を保持する同じデータディレクトリに作成され、ログファイル名はデフォルトでホスト名の後に上記のディレクティブ名に一致するサフィックスが続きます(例:-bin、-slow -クエリなど)。

ログを別のパスに保持したり、別のファイル名を使用したりするには、log=ディレクティブの後にベース名と、たとえば次のような任意のパスとファイル名を指定します。

[mysqld]
log-bin=/var/log/mysql-bin.log
log=/var/log/mysql.log
log-error=/var/log/mysql-error.log
log-slow-queries=/var/log/mysql-slowquery.log

これらの変更を有効にするには、mysqldを再起動する必要があります。


5

以前の回答は古くなっていました。設定ファイルは/etc/my.cnf、Windows内またはWindows上で見ることができます./mysql/my.ini

では[mysqld]セクションの追加

log_bin
general_log
log_error

Windowsのドキュメントには、ログがに保存されることが記載されていProgramData/MySQL/MySQL Server 5.6/ます。嘘なので無視してください。

さらに、推奨logオプションは減価償却され、エラーが発生します

ambiguous option '--log' (log-bin, log_slave_updates)

ログインされ./mysql/data/host.err、デーモンが静かに死にます。正しい設定はgeneral-logです。

またlog-slow-queries、有効ではなく、エラーが発生しました

C:\mysql\bin\mysqld.exe: unknown option '--log-slow-queries'

そのため、それからも離れてください。


ありがとうございました!このlog=オプションを使用してサーバーを起動できなかったため、私の人生ではその理由を理解できました。最後に答えを持つ誰か。general-log
jiveturkey

2

スーパー権限でmysqlコマンドラインを入力し、次を実行します。

SET GLOBAL general_log_file = '/var/log/mysql/mysql.log'; 

私の場合、この変数に同じ値が既に設定されていても問題ありませんでした!また、他の投稿で述べたように、ファイルのパーミッションと所有者を変更しました。


1

my.cnfで別のログ設定を試してください。私の場合、私は必要でした:

general_log = on

general_log_file=/var/log/mysql/mysql.log
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.