有個朋友發了一段啟動錯誤的stack,當啟動Skip_Grant_Table就不報錯: 群里的大神找出來了因為udf_initv這個自定義函數報錯。 但是一直想不通為啥服務啟動要去運行自定義函數呢? mysqld_main裡面有一段代碼: 其中opt_noacl就是參數skip_grant_tabl ...
有個朋友發了一段啟動錯誤的stack,當啟動Skip_Grant_Table就不報錯:
群里的大神找出來了因為udf_initv這個自定義函數報錯。
但是一直想不通為啥服務啟動要去運行自定義函數呢?
mysqld_main裡面有一段代碼:
if (!opt_noacl) { #ifdef HAVE_DLOPEN udf_init(); #endif }
其中opt_noacl就是參數skip_grant_table,如果沒有設置opt_noacl=1 否則為0 ,所以沒有設置skip_grant_table,那麼就會進入udf_init然後去初始化自定義函數,如果自定義函數有問題,導致服務無法啟動。