/ var/logと/ usr/local/mysqlを確認したところ、ログが見つからないようです。 PHP関数を使用したデータベース接続の確立エラーのトラブルシューティングを試みています。
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は、オープンソースのすべてのものへの私の取り組みによって無料であなたにもたらされました。
MySQL/MariaDBログには3つのタイプがあります。
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 -se "SELECT @@datadir"
エラーログを表示するには、次のコマンドを実行します。
Sudo tail -f $(mysql -Nse "SELECT @@log_error")
一般的なログを有効にしている場合、それを表示するには、次のコマンドを実行します。
Sudo tail -f $(mysql -Nse "SELECT CONCAT(@@datadir, @@general_log_file)")
この情報を見つけるもう1つの方法は、lsof
を使用することです。
アクティビティモニターを使用してmysql
のPIDを検索するか、ps -ef | grep mysqld
を使用して検索します。
Sudo lsof -p PID_OF_MYSQLD
とMySQLが開いているファイルを確認します。
これを見つけるのにしばらくかかりました...この場所を試してください:」
Sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err
デフォルトでは、すべてのログファイルはmysqldデータディレクトリに作成されます。
ソース: MySQLドキュメント
mysqlbinlog
を使用して、/ usr/local/mysql/data /にあるバイナリログファイルを読み取ることができます(私のインストールでは、すべてがバイナリではありませんでした)。一部のエラーは単純にstderrに送信されるため、/var/log/system.log
も確認する必要がある場合があります。
そのログを保持しているフォルダには、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は何をしているのですか? を参照することをお勧めします。
デフォルトでは、すべてのログファイルはmysqldデータディレクトリに作成されます。残念ながら、多くの人はログファイル(およびプログラム)を通常の場所に配置しません。私もその一人です!
私が試してみるまで、MySQLでこのルーチンを自分で試してみました Navicat for MySQL 。後で Navicat Premium にアップグレードしました。どちらにも、すべてのサーバー変数を1つの包括的なリストにまとめたタブを含む監視ツールがあります。 log_errorサーバー変数のスクリーンショットを次に示します。
Navicatサーバー監視ツールのlog_errorサーバー変数
リストのすぐそこに変数を設定することもできます。
乾杯!