MySQL'de log_bin_trust_function_creators kullanımı


Yanıtlar:


14

Bu değişken, ikili günlüğe kaydetmenin güvenli olmayan olaylara neden olacak depolanmış işlevler oluşturmamaları için depolanan işlev yaratıcılarına güvenip güvenmeyeceğini denetler. Örneğin. UUID işlevlerine sahip.

Bu dokümantasyonda iyi açıklanmıştır:

Depolanmış bir işlev oluşturduğunuzda, işlevin deterministik olduğunu veya verileri değiştirmediğini bildirmeniz gerekir. Aksi takdirde, veri kurtarma veya çoğaltma için güvenli olmayabilir.

Varsayılan olarak, bir CREATE FUNCTION deyiminin kabul edilmesi için DETERMINISTIC, NO SQL veya READS SQL DATA'dan en az birinin açıkça belirtilmesi gerekir. Aksi takdirde bir hata oluşur:

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)

İşlev oluşturma ile ilgili önceki koşulları gevşetmek için (SUPER ayrıcalığına sahip olmanız ve bir işlevin deterministik olarak bildirilmesi veya verileri değiştirmemesi gerekir), global log_bin_trust_function_creators sistem değişkenini 1 olarak ayarlayın.

Referans: mysql-document (bunu örnekle açıkladığı gibi okuyun).

İkinci sorunuz hakkında, dinamikse ve sunucuyu yeniden başlattığınızda değişecekse:

  • Evet, dinamik bir değişkendir.

  • Yapılandırmayı değişikliği yansıtacak şekilde güncellemezseniz, değişken yeniden başlatma sonrasında değişecektir.

Referans: mysql-belgeler-tekrar


bir boole değeri alıyor mu? Doğru benim için DOĞRU olarak ayarlanmış .. bu '1' anlamına mı geliyor?
tesla747

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

Tamam anlıyorum. Ancak özellikle bu parametre için '1' olarak değiştirmek gerekli mi? Şimdi DOĞRU olarak ayarladığımdan beri, mysql hizmetini yeniden
başlattığımda

1
Doğru! Bu nedenle, kalıcı olmasını sağlamak için my.cnf dosyanıza da aynı yapılandırma değerini koymanız gerekir.
mysql_user

1
@ tesla747 evet ... ikili kayıt etkinleştirildiğinde geçerlidir.
mysql_user
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.