การใช้งานlog_bin_trust_function_creators
คืออะไร? นอกจากนี้ค่าของพารามิเตอร์แบบไดนามิกหรือไม่ มันจะเปลี่ยนไปหรือไม่ถ้าฉันเริ่มบริการ MySQL ใหม่
การใช้งานlog_bin_trust_function_creators
คืออะไร? นอกจากนี้ค่าของพารามิเตอร์แบบไดนามิกหรือไม่ มันจะเปลี่ยนไปหรือไม่ถ้าฉันเริ่มบริการ MySQL ใหม่
คำตอบ:
ตัวแปรนี้ควบคุมว่าการบันทึกแบบไบนารีควรเชื่อถือผู้สร้างฟังก์ชันที่เก็บไว้หรือไม่เพื่อสร้างฟังก์ชันที่เก็บไว้ซึ่งจะทำให้เกิดเหตุการณ์ที่ไม่ปลอดภัย เช่น. มีฟังก์ชั่น UUID
สิ่งนี้ได้รับการอธิบายอย่างดีในเอกสาร:
เมื่อคุณสร้างฟังก์ชั่นที่เก็บไว้คุณจะต้องประกาศว่ามันถูกกำหนดไว้หรือไม่แก้ไขข้อมูล มิฉะนั้นอาจไม่ปลอดภัยสำหรับการกู้คืนข้อมูลหรือการจำลองแบบ
โดยค่าเริ่มต้นเพื่อให้คำสั่ง CREATE FUNCTION ได้รับการยอมรับอย่างน้อยหนึ่งใน DETERMINISTIC, NO SQL หรือ READS SQL DATA ต้องระบุอย่างชัดเจน มิฉะนั้นจะเกิดข้อผิดพลาด:
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
หากต้องการผ่อนคลายเงื่อนไขก่อนหน้านี้เกี่ยวกับการสร้างฟังก์ชัน (ซึ่งคุณต้องมีสิทธิ์ SUPER และฟังก์ชันนั้นต้องประกาศกำหนดหรือไม่แก้ไขข้อมูล) ให้ตั้งค่าตัวแปรระบบทั่วโลก log_bin_trust_function_creators เป็น 1
เอกสารอ้างอิง: mysql-document (อ่านสิ่งนี้ตามที่อธิบายด้วยตัวอย่าง)
เกี่ยวกับคำถามที่สองของคุณหากเป็นแบบไดนามิกและจะเปลี่ยนหากคุณรีสตาร์ทเซิร์ฟเวอร์:
ใช่มันเป็นตัวแปรแบบไดนามิก
ตัวแปรจะเปลี่ยนเมื่อรีสตาร์ทหากคุณไม่อัปเดตการกำหนดค่าเพื่อสะท้อนการเปลี่ยนแปลง
อ้างอิง: mysql-เอกสาร - อีกครั้ง
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE