Penggunaan log_bin_trust_function_creators di MySQL


14

Apa gunanya log_bin_trust_function_creators? Juga, Apakah nilai parameternya dinamis? Apakah akan berubah jika saya me-restart layanan MySQL saya?

Jawaban:


12

Variabel ini mengontrol apakah pencatatan biner harus memercayai pencipta fungsi yang disimpan untuk tidak membuat fungsi tersimpan yang akan menyebabkan peristiwa yang tidak aman. Misalnya. memiliki fungsi UUID.

Ini telah dijelaskan dengan baik dalam dokumentasi:

Ketika Anda membuat fungsi tersimpan, Anda harus menyatakan bahwa itu bersifat deterministik atau tidak mengubah data. Kalau tidak, mungkin tidak aman untuk pemulihan atau replikasi data.

Secara default, agar pernyataan FUNGSI CREATE diterima, setidaknya satu dari DETERMINISTIC, NO SQL, atau READS SQL DATA harus ditentukan secara eksplisit. Kalau tidak, akan terjadi kesalahan:

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)

Untuk mengendurkan kondisi sebelumnya pada pembuatan fungsi (bahwa Anda harus memiliki hak SUPER dan bahwa suatu fungsi harus dinyatakan deterministik atau untuk tidak mengubah data), atur variabel sistem log_bin_trust_function_creators global ke 1.

Referensi: dokumentasi mysql (baca ini sebagaimana dijelaskan dengan contoh.)

Tentang pertanyaan kedua Anda, apakah itu dinamis dan apakah akan berubah jika Anda me-restart server:

  • Ya itu adalah variabel dinamis.

  • Variabel akan berubah saat restart, jika Anda tidak memperbarui konfigurasi untuk mencerminkan perubahan.

Referensi: dokumentasi mysql-lagi


apakah itu mengambil nilai boolean? Benar diatur ke BENAR untuk saya .. apakah itu berarti '1'?
tesla747

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

Ok saya mengerti itu. Tetapi apakah perlu untuk mengubahnya ke '1' terutama untuk parameter itu? Sekarang karena saya mengaturnya sebagai BENAR, ketika saya me-restart layanan mysql akan berubah lagi
tesla747

1
Betul! Jadi untuk membuatnya tetap, Anda harus meletakkan nilai konfigurasi yang sama di file my.cnf Anda juga.
mysql_user

1
@ tesla747 ya ... itu berlaku ketika pencatatan biner diaktifkan.
mysql_user
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.