บันทึก mysql ของฉันอยู่ที่ OS X


74

ฉันตรวจสอบ / var / log และ / usr / local / mysql และฉันไม่พบบันทึกการค้นหา ฉันพยายามแก้ไขข้อผิดพลาดในการสร้างการเชื่อมต่อฐานข้อมูลด้วยฟังก์ชั่น php

คำตอบ:


95

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

จากนั้นคุณจะเห็นว่าข้อมูลของฉันคือ/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 นี้มอบให้คุณฟรีโดยความมุ่งมั่นของฉันต่อทุกสิ่งที่โอเพนซอร์ส


2
mysqladmin variablesขณะนี้เป็นคำสั่งที่ต้องการสำหรับรับค่าปัจจุบันแทนการใช้โดยตรงmysqld
John Cummings

@ JohnCummings, แหล่งที่มา?
Pacerier

วันนี้ฉันลงคะแนนโดยไม่แสดงความคิดเห็น ฉันคงคำตอบทั้งหมดไว้ แม้แต่คนที่อายุ 10 ขวบ คุณไม่ได้ช่วยใครเลยด้วยการลงคะแนน ทิ้งข้อความไว้!
Bruno Bronosky

@ jm3 สนใจที่จะทำอย่างละเอียด? ฉันไม่สามารถเข้าถึง MacOS ได้อีกต่อไป
Bruno Bronosky

12

บันทึก MySQL / MariaDB มี 3 ประเภท:

  • log_error สำหรับบันทึกข้อความแสดงข้อผิดพลาด;
  • general_log_fileสำหรับไฟล์บันทึกการสืบค้นทั่วไป (ถ้าเปิดใช้งานโดยgeneral_log);
  • slow_query_log_fileสำหรับไฟล์บันทึกการสืบค้นที่ช้า (ถ้าเปิดใช้งานโดยslow_query_log);

ตรวจสอบการตั้งค่าและตำแหน่งของบันทึกด้านบนโดยคำสั่ง shell นี้:

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)")

10

lsofวิธีการหาข้อมูลเหล่านี้ก็คือการใช้

  1. ใช้การตรวจสอบกิจกรรมเพื่อค้นหา PID mysqlหรือใช้ps -ef | grep mysqldเพื่อค้นหา

  2. sudo lsof -p PID_OF_MYSQLD และดูว่าไฟล์ MySQL เปิดอะไร


6

ใช้เวลาสักครู่เพื่อค้นหาสิ่งนี้ ... ลองใช้ตำแหน่งนี้: '

sudo vi /usr/local/mysql/data/YOUR-USERNAME.local.err

3
ของฉันอยู่ใน/usr/local/var/mysql/<USERNAME>.local.err
jonnysamps

3

โดยค่าเริ่มต้นไฟล์บันทึกทั้งหมดจะถูกสร้างขึ้นในไดเรกทอรีข้อมูล mysqld

ที่มา: เอกสาร MySQL

คุณสามารถใช้mysqlbinlogเพื่ออ่านไฟล์บันทึกไบนารีใน / usr / local / mysql / data / (ในการติดตั้งของฉันไม่ใช่ทั้งหมดเป็นไบนารี) ข้อผิดพลาดบางอย่างจะถูกนำไปยัง stderr โดยตรงดังนั้นคุณอาจต้องการตรวจสอบ/var/log/system.logเช่นกัน


ฉันไม่มีไดเรกทอรีข้อมูลใน mysql dir ฉันดูทั่วทั้งไดเรกทอรี / usr / local / mysql / และหาบันทึกไม่พบ ไม่มีวิธีดูการกำหนดค่า mysql หรือไม่? เหมือน phpinfo ()
Tony

คุณติดตั้ง MySQL ได้อย่างไร MySQL ที่ติดตั้งมาพร้อมกับ Mac OS X Server, MacPorts หรือแพ็คเกจ MySQL อย่างเป็นทางการ?
Chealion

0

โฟลเดอร์ที่เก็บบันทึกนั้นอาจไม่สามารถเข้าถึงได้โดยไม่ต้องใช้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 ทำอะไร บน Server Fault


ฉันไม่มีข้อมูล dir ใน / usr / local / mysql
Tony

0

โดยค่าเริ่มต้นไฟล์บันทึกทั้งหมดจะถูกสร้างขึ้นในไดเรกทอรีข้อมูล mysqld น่าเสียดายที่หลายคนไม่ได้ใส่ไฟล์บันทึก (และโปรแกรม) ไว้ในตำแหน่งปกติ ฉันเป็นหนึ่งในนั้น!

ฉันเดินผ่านประจำวันนี้ตัวเองกับ MySQL จนกว่าฉันจะพยายามออกNavicat สำหรับ MySQL ต่อมาผมอัพเกรดNavicat พรีเมี่ยม ทั้งสองมีเครื่องมือการตรวจสอบที่มีแท็บที่มีตัวแปรเซิร์ฟเวอร์ทั้งหมดในรายการที่ครอบคลุมหนึ่งรายการ นี่คือภาพหน้าจอพร้อมตัวแปรเซิร์ฟเวอร์ log_error:

ตัวแปรเซิร์ฟเวอร์ log_error ในเครื่องมือตรวจสอบสถานะเซิร์ฟเวอร์ Navicat

ตัวแปรเซิร์ฟเวอร์ log_error ในเครื่องมือตรวจสอบสถานะเซิร์ฟเวอร์ Navicat

นอกจากนี้คุณยังสามารถตั้งค่าตัวแปรได้ในรายการ

ไชโย!


-2

/Library/Logs/MySQL.log


ฉันเห็นบันทึกอื่น ๆ ในนั้น แต่ไม่ใช่ mysql
Tony

นี่เป็น Mac OS X Server รุ่นใด โดยทั่วไปคุณจะต้องค้นหาใน / var / log / & / Library / Logs / ภายใต้ Mac OS X Server เฉพาะเจาะจงมากขึ้นสำหรับปัญหานี้ดู /var/log/system.log อาจมีบางสิ่งที่ใช้ใน / var / mysql (เช่นไฟล์บันทึก .err) แต่ฉัน (ในการกำหนดค่าเริ่มต้นของ Leopard Server) ยังมีการกล่าวถึง / ห้องสมุด / ท่อน / MySQL.log คุณกำลังพยายามเชื่อมต่อผ่านซ็อกเก็ตหรือการเชื่อมต่อเครือข่ายหรือไม่? หากหลังคุณ "เปิดใช้งานการเชื่อมต่อเครือข่าย" ใน Server Admin (บน Leopard ใน Tiger เป็นแอปแยกต่างหากใน / Applications / Utilities) หรือไม่
morgant
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.