有個朋友發了一段啓動錯誤的stack,當啓動Skip_Grant_Table就不報錯:mysql
羣裏的大神找出來了由於udf_initv這個自定義函數報錯。sql
可是一直想不通爲啥服務啓動要去運行自定義函數呢?函數
mysqld_main裏面有一段代碼:3d
if (!opt_noacl) { #ifdef HAVE_DLOPEN udf_init(); #endif }
其中opt_noacl就是參數skip_grant_table,若是沒有設置opt_noacl=1 不然爲0 ,因此沒有設置skip_grant_table,那麼就會進入udf_init而後去初始化自定義函數,若是自定義函數有問題,致使服務沒法啓動。blog