@@ -680,8 +680,34 @@ function db_user_update($event_name, $data) {
680680 }
681681
682682 if ($ data ['new ' ]['database_password ' ] != $ data ['old ' ]['database_password ' ] && $ data ['new ' ]['database_password ' ] != '' ) {
683- $ link ->query ("SET PASSWORD FOR ' " .$ link ->escape_string ($ data ['new ' ]['database_user ' ])."'@' $ db_host' = ' " .$ link ->escape_string ($ data ['new ' ]['database_password ' ])."'; " );
684- $ app ->log ('Changing MySQL user password for: ' .$ data ['new ' ]['database_user ' ].'@ ' .$ db_host , LOGLEVEL_DEBUG );
683+ $ result = $ app ->db ->queryOneRecord ("SELECT VERSION() as version " );
684+ $ dbversion = $ result ['version ' ];
685+
686+ // mariadb
687+ if (stripos ($ dbversion , 'mariadb ' ) !== false ) {
688+ $ query = sprintf ("SET PASSWORD FOR '%s'@'%s' = '%s' " ,
689+ $ link ->escape_string ($ data ['new ' ]['database_user ' ]),
690+ $ db_host ,
691+ $ link ->escape_string ($ data ['new ' ]['database_password ' ]));
692+ $ link ->query ($ query );
693+ }
694+ // mysql
695+ else {
696+ if (version_compare ($ dbversion , '5.7 ' ) >= 0 ) {
697+ $ query = sprintf ("ALTER USER IF EXISTS '%s'@'%s' IDENTIFIED WITH mysql_native_password AS '%s' " ,
698+ $ link ->escape_string ($ data ['new ' ]['database_user ' ]),
699+ $ db_host ,
700+ $ link ->escape_string ($ data ['new ' ]['database_password ' ]));
701+ $ link ->query ($ query );
702+ } else {
703+ $ query = sprintf ("SET PASSWORD FOR '%s'@'%s' = '%s' " ,
704+ $ link ->escape_string ($ data ['new ' ]['database_user ' ]),
705+ $ db_host ,
706+ $ link ->escape_string ($ data ['new ' ]['database_password ' ]));
707+ $ link ->query ($ query );
708+ }
709+ $ app ->log ('Changing MySQL user password for: ' . $ data ['new ' ]['database_user ' ] . '@ ' . $ db_host , LOGLEVEL_DEBUG );
710+ }
685711 }
686712 }
687713
0 commit comments