web-dev-qa-db-ja.com

OS Xのmysqlログはどこにありますか?

/ var/logと/ usr/local/mysqlを確認したところ、ログが見つからないようです。 PHP関数を使用したデータベース接続の確立エラーのトラブルシューティングを試みています。

74
Tony

Chealionが述べたように、mysqlをインストールする方法はいくつかあります。それぞれがデータディレクトリやログを別の場所に配置します。次のコマンドは、あなた(そして私たち)がどこを見ればよいかを示します。

ps auxww|grep [m]ysqld

# Putting brackets around the first char is a `grep`+`ps` trick
# to keep it from matching its own process.
# Note: For zsh compatibility put quotes around the grep regex

そのコマンドの結果をここに投稿できますか?鉱山は次のようになります。

_mysql     101   0.0  0.3   112104  13268   ??  S    12:30AM   0:13.20 /opt/local/libexec/mysqld --basedir=/opt/local --datadir=/opt/local/var/db/mysql --user=mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid
root        76   0.0  0.0   600172    688   ??  S    12:30AM   0:00.02 /bin/sh /opt/local/lib/mysql/bin/mysqld_safe --datadir=/opt/local/var/db/mysql --pid-file=/opt/local/var/db/mysql/rbronosky-mbp.pid

それから、私のdatadirが/opt/local/var/db/mysqlであることがわかります(MacPorts経由でインストールしたため)。このレッスンをもう少し見てみましょう...

最初の行から、私のデーモンが/opt/local/libexec/mysqldであることがわかります。 mysqld--verbose --helpで呼び出して、すべてのコマンドラインオプションのリストを取得できます(これが重要で重要な部分です)。その後、mysqldを起動した場合に使用される値が続きます。ヘルプ出力を確認するだけです。値は、コンパイル時の構成、my.cnfファイル、およびコマンドラインオプションの結果です。この機能を利用して、ログファイルがどこにあるかを正確に調べることができます。

/opt/local/libexec/mysqld --verbose --help|grep '^log'

鉱山は次のようになります。

log                               /tmp/mysql.log
log-bin                           /tmp/mysql-bin
log-bin-index                     (No default value)
log-bin-trust-function-creators   FALSE
log-bin-trust-routine-creators    FALSE
log-error                         /tmp/mysql.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

見守って!私のログファイルは完全に非標準の場所に保存されているため、世界中のアドバイスのすべてが私を助けにはなりませんでした!私のノートパソコンは/tmp/のままにしておきます。これは、私のラップトップでは、再起動時にすべてのログが失われることを気にしていません(実際には好みます)。

それをすべてまとめて、ワンライナーにしましょう:

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

その1つのコマンドを実行すると、実行中のmysqlのインスタンスのすべてのログのリストが表示されます。

楽しい!

このBash-Fuは、オープンソースのすべてのものへの私の取り組みによって無料であなたにもたらされました。

94
Bruno Bronosky

MySQL/MariaDBログには3つのタイプがあります。

次のシェルコマンドで上記のログの設定と場所を確認します。

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

デフォルトでは、ログはデータディレクトリに保存されるため、次のシェルコマンドで場所を確認します。

mysql -se "SELECT @@datadir"

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

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

一般的なログを有効にしている場合、それを表示するには、次のコマンドを実行します。

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

この情報を見つけるもう1つの方法は、lsofを使用することです。

  1. アクティビティモニターを使用してmysqlのPIDを検索するか、ps -ef | grep mysqldを使用して検索します。

  2. Sudo lsof -p PID_OF_MYSQLDとMySQLが開いているファイルを確認します。

10
tobym

これを見つけるのにしばらくかかりました...この場所を試してください:」

Sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
6
Mark Shust

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

ソース: MySQLドキュメント

mysqlbinlogを使用して、/ usr/local/mysql/data /にあるバイナリログファイルを読み取ることができます(私のインストールでは、すべてがバイナリではありませんでした)。一部のエラーは単純にstderrに送信されるため、/var/log/system.logも確認する必要がある場合があります。

3
Chealion

そのログを保持しているフォルダには、Sudoを使用しないとアクセスできない場合があります。

Sudo ls -l "/usr/local/mysql-5.0.51a-osx10.5-x86"
[..]
drwxr-x---   4 _mysql  wheel    136 Jul 10 23:06 data

たまたま大きなログファイルが見つかり、Time Machineを使用している場合は、サーバーの障害について Time Machineは何をしているのですか? を参照することをお勧めします。

0
Arjan

デフォルトでは、すべてのログファイルはmysqldデータディレクトリに作成されます。残念ながら、多くの人はログファイル(およびプログラム)を通常の場所に配置しません。私もその一人です!

私が試してみるまで、MySQLでこのルーチンを自分で試してみました Navicat for MySQL 。後で Navicat Premium にアップグレードしました。どちらにも、すべてのサーバー変数を1つの包括的なリストにまとめたタブを含む監視ツールがあります。 log_errorサーバー変数のスクリーンショットを次に示します。

Navicatサーバー監視ツールのlog_errorサーバー変数

log_error server variable in Navicat Server Monitoring Tool

リストのすぐそこに変数を設定することもできます。

乾杯!

0
Rob Gravelle