Mysql

我在 OS X 上的 mysql 日誌在哪裡?

  • March 21, 2022

我檢查了 /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'

執行該命令,您將獲得正在執行的 mysql 實例的所有日誌列表。

享受!

這個 Bash-Fu 是我對所有開源事物的承諾免費帶給你的。

引用自:https://serverfault.com/questions/42531