มีคำสั่งให้ตรวจสอบไฟล์กำหนดค่า MySQL 5.0 ที่ใช้อยู่หรือไม่?
มีคำสั่งให้ตรวจสอบไฟล์กำหนดค่า MySQL 5.0 ที่ใช้อยู่หรือไม่?
คำตอบ:
ถ้าคุณอยู่ในลินุกซ์แล้วเริ่มต้น 'mysqld ด้วยสำหรับเช่นstrace
strace ./mysqld
ในทุกสายระบบอื่น ๆ คุณจะพบสิ่งที่ชอบ:
stat64("/etc/my.cnf", 0xbfa3d7fc) = -1 ENOENT (No such file or directory)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
ดังนั้นอย่างที่คุณเห็น .. มันแสดงรายการไฟล์. cnf ซึ่งมันจะพยายามใช้และใช้งานในที่สุด
ps auxf
และค้นหาคำสั่งที่เรียกใช้งานสำหรับ MySQL โดยทั่วไปแล้วดูเหมือนว่าบางสิ่งเช่นmysqld --basedir=/usr/local/mysql ...
(โปรดทราบว่า ... เพียงหมายความว่าอาจมีการตั้งค่าสถานะเพิ่มเติมในคำสั่ง แต่ฉันจะไม่แสดงรายการทั้งหมด) เมื่อคุณพบแล้วให้คัดลอกสิ่งทั้งหมดแล้วปิด MySQL หากคุณอยู่ในลินุกซ์มันเป็นหรือ/etc/init.d/mysqld stop
mysqladmin -u root -p shutdown
จากนั้นเรียกใช้strace
ด้วยคำสั่ง mysql ที่คุณคัดลอก ดังนั้นมันจะเป็นดังนี้:strace mysqld --basedir=/usr/local/mysql
open(...
เส้น แต่ฉันมี 4 = -1 Err#2
สายที่จบลงด้วยการ ฉันจะรู้ได้อย่างไรว่าไฟล์ไหนที่ถูกโหลด?
sudo dtruss mysqld 2>&1|grep my.cnf
@mgPePe ผลลัพธ์นั้นน่าจะหมายความว่าไม่พบไฟล์ใด ๆ เลยจึงไม่ได้เปิดเลย
นำมาจากหนังสือ "ประสิทธิภาพสูง MySQL" ที่ยอดเยี่ยม:
$ which mysqld
/usr/sbin/mysqld
$ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options"
Default options are read from the following files in the given order:
/etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf
!includedir
ฉันไม่คิดว่านี้จะแสดงรายการไฟล์ที่ระบุโดย ฉันกำลังพยายามหาสาเหตุว่า!includedir
คำสั่งใน/etc/mysql/my.cnf
ไฟล์ของฉันไม่ทำงาน
mysqld
ด้วยเส้นทางเต็ม!
ถ้าคุณเรียกใช้mysql --verbose --help | less
มันจะบอกคุณเกี่ยวกับบรรทัด 11 ซึ่ง.cnf
ไฟล์นั้นจะค้นหา
คุณยังสามารถทำmysql --print-defaults
เพื่อแสดงให้คุณเห็นว่าการกำหนดค่าจะใช้อย่างไร สิ่งนี้ยังมีประโยชน์ในการระบุไฟล์กำหนดค่าที่กำลังโหลด
mysqld
แทนmysql
mysqld --print-defaults
มันให้สิ่งที่ฉันต้องการเมื่อฉัน googled คำถามนี้
ฉันอยู่บน Windows และฉันได้ติดตั้งชุมชน MySQL รุ่นล่าสุด 5.6
สิ่งที่ฉันทำเพื่อดูว่าไฟล์การกำหนดค่าที่ใช้คือไปที่เครื่องมือการดูแลระบบ> บริการ> MySQL56> คลิกขวา> คุณสมบัติและตรวจสอบเส้นทางเพื่อปฏิบัติการ:
"C: / ไฟล์โปรแกรม / เซิร์ฟเวอร์ MySQL / MySQL 5.6 / bin \ mysqld" --defaults-file = "C: \ ProgramData \ เซิร์ฟเวอร์ MySQL \ MySQL \ MySQL 5.6 \ my.ini" MySQL56
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
โดยค่าเริ่มต้น
ทางเลือกหนึ่งคือการใช้
mysqladmin variables
mysqld - help - verbose เป็นสิ่งที่อันตราย คุณสามารถเขียนทับ pidfile ได้อย่างง่ายดายสำหรับการใช้งานอินสแตนซ์! ใช้กับ --pid-file = XYZ
โอ้และคุณไม่สามารถใช้งานได้จริงถ้าคุณมีอินสแตนซ์มากกว่า 1 ตัวที่ทำงาน มันจะแสดงเฉพาะค่าเริ่มต้น
บทความที่ดีจริงๆเกี่ยวกับเรื่องนี้:
เพิ่งทดสอบอย่างรวดเร็วกับ Ubuntu:
ติดตั้ง mysql-server ซึ่งสร้าง /etc/mysql/my.cnf
mysqld - verbose --help | grep -A 1 "ตัวเลือกเริ่มต้น"
110112 13:35:26 [หมายเหตุ] ปลั๊กอิน 'FEDERATED' ถูกปิดใช้งาน
ตัวเลือกเริ่มต้นจะอ่านจากไฟล์ต่อไปนี้ตามลำดับที่กำหนด: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf
สร้าง /etc/my.cnf และ /usr/etc/my.cnf โดยแต่ละหมายเลขพอร์ตแตกต่างกัน
รีสตาร์ท mysql - มันใช้หมายเลขพอร์ตที่ตั้งค่าไว้ใน /usr/etc/my.cnf
ในขณะเดียวกันก็พบตัวเลือก --defaults-file ไปยัง mysqld หากคุณระบุไฟล์ปรับแต่งที่นั่นจะมีเพียงไฟล์เดียวที่จะถูกใช้โดยไม่คำนึงถึงสิ่งที่ส่งคืนโดย / usr / sbin / mysqld --verbose --help | grep -A 1 "ตัวเลือกเริ่มต้น"
ฉันพบว่ามีประโยชน์จริงๆ:
Control Panel -> Administration Tools
Properties
Path to executable
และดูว่ามีเส้นทางไปยังmy.ini/my.cfg
เซิร์ฟเวอร์บางตัวมีการติดตั้งและตั้งค่า MySQL หลายเวอร์ชัน ตรวจสอบให้แน่ใจว่าคุณจัดการกับเวอร์ชันที่ถูกต้องซึ่งใช้กับคำสั่ง Unix ของ:
ps -ax | grep mysql
สำหรับผู้ใช้เซิร์ฟเวอร์ windows ที่มี mysql เป็นบริการวิธีง่ายๆในการค้นหาไฟล์ config ที่คุณใช้คือเปิดแผงควบคุมบริการค้นหาบริการ mysql ของคุณ (ในกรณีของฉัน 'MYSQL56') คลิกขวาและคลิกคุณสมบัติ . จากนั้นคุณสามารถตรวจสอบ "เส้นทางไปยังปฏิบัติการ" ซึ่งควรมีdefaults-file
สวิตช์ที่ชี้ไปที่ไฟล์ปรับแต่งของคุณ
ในกรณีที่คุณใช้macสิ่งนี้สามารถทำได้โดย:
sudo dtruss mysqld 2>&1 | grep cnf
หากคุณใช้ Windows คุณสามารถใช้ Sysinternals procmonได้ เปิดและกำหนดค่าตัวกรองเช่นนี้จากนั้นคลิก "เพิ่ม" ตอนนี้ procmon จะทำการตรวจสอบ mysqld
ตอนนี้เริ่มเซิร์ฟเวอร์ mysql ของคุณตามปกติ Procmon จะบันทึกการทำงานพื้นหลังของ mysql ค้นหา "ของฉัน" ในบานหน้าต่างผลลัพธ์ procmon และคุณจะพบสิ่งต่อไปนี้:
เป็นที่ชัดเจนว่า mysql ค้นหารายการไฟล์การกำหนดค่าตามลำดับ ในกรณีของฉันพบว่าC:\mysql-5.7.19-winx64\my.cnf
ประสบความสำเร็จดังนั้นจึงใช้อันนี้