การใช้ log_bin_trust_function_creators ใน MySQL


14

การใช้งานlog_bin_trust_function_creatorsคืออะไร? นอกจากนี้ค่าของพารามิเตอร์แบบไดนามิกหรือไม่ มันจะเปลี่ยนไปหรือไม่ถ้าฉันเริ่มบริการ MySQL ใหม่

คำตอบ:


14

ตัวแปรนี้ควบคุมว่าการบันทึกแบบไบนารีควรเชื่อถือผู้สร้างฟังก์ชันที่เก็บไว้หรือไม่เพื่อสร้างฟังก์ชันที่เก็บไว้ซึ่งจะทำให้เกิดเหตุการณ์ที่ไม่ปลอดภัย เช่น. มีฟังก์ชั่น 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-เอกสาร - อีกครั้ง


มันใช้ค่าบูลีนหรือไม่? ใช่มันถูกตั้งค่าเป็น TRUE สำหรับฉัน .. นั่นหมายความว่ามันคือ '1' หรือไม่?
tesla747

mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE
mysql_user

ตกลงฉันเข้าใจสิ่งนั้น แต่จำเป็นต้องเปลี่ยนเป็น '1' โดยเฉพาะอย่างยิ่งสำหรับพารามิเตอร์นั้นหรือไม่ ตอนนี้ตั้งแต่ฉันตั้งค่าเป็น TRUE เมื่อฉันเริ่มบริการ mysql ใหม่จะเปลี่ยนอีกครั้ง
tesla747

1
ถูกตัอง! ดังนั้นเพื่อให้ถาวรคุณควรใส่ค่าการกำหนดค่าเดียวกันในไฟล์ my.cnf ของคุณเช่นกัน
mysql_user

1
@ tesla747 ใช่ ... มันใช้เมื่อเปิดใช้งานการบันทึกแบบไบนารี
mysql_user
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.