diff --git a/ChangeLog b/ChangeLog
index 87eca13ebe4638d7e58f988ce1f02cfab4adb32a..8fe1e968571a3056a16b5b8f3c14dfea97337df4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -51,6 +51,7 @@ For users:
 - Fix: Running sending-email.php
 - Fix: Warning should not appears for invoice closed
 - Fix: Import for companies works even with prefix empty.
+- Fix: bug #28895 : Création d'utilisateur impossible.
 
 For developers:
 - Qual: Reorganize /dev directory.
diff --git a/htdocs/lib/databases/mysql.lib.php b/htdocs/lib/databases/mysql.lib.php
index c80d5f173610fe35d9408c34e39e8252c381e4b2..01e738f1d10b86dc318476df83e908978cb6886f 100644
--- a/htdocs/lib/databases/mysql.lib.php
+++ b/htdocs/lib/databases/mysql.lib.php
@@ -999,7 +999,7 @@ class DoliDb
 	{
 		$sql = "INSERT INTO user ";
 		$sql.= "(Host,User,password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Index_Priv,Alter_priv,Lock_tables_priv)";
-		$sql.= " VALUES ('$dolibarr_main_db_host','$dolibarr_main_db_user',password('$dolibarr_main_db_pass')";
+		$sql.= " VALUES ('".addslashes($dolibarr_main_db_host)."','".addslashes($dolibarr_main_db_user)."',password('".addslashes($dolibarr_main_db_pass)."')";
 		$sql.= ",'Y','Y','Y','Y','Y','Y','Y','Y','Y')";
 
 		dol_syslog("mysql.lib::DDLCreateUser", LOG_DEBUG);	// No sql to avoid password in log
@@ -1012,7 +1012,7 @@ class DoliDb
 
 		$sql = "INSERT INTO db ";
 		$sql.= "(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Index_Priv,Alter_priv,Lock_tables_priv)";
-		$sql.= " VALUES ('$dolibarr_main_db_host','$dolibarr_main_db_name','$dolibarr_main_db_user'";
+		$sql.= " VALUES ('".addslashes($dolibarr_main_db_host)."','".addslashes($dolibarr_main_db_name)."','".addslashes($dolibarr_main_db_user)."'";
 		$sql.= ",'Y','Y','Y','Y','Y','Y','Y','Y','Y')";
 
 		dol_syslog("mysql.lib::DDLCreateUser sql=".$sql,LOG_DEBUG);
diff --git a/htdocs/lib/databases/mysqli.lib.php b/htdocs/lib/databases/mysqli.lib.php
index 773d5d8849822d0af67f96b0641f1703f9a704f8..58f28fc6dc48d9b61ca729b3e7bc4c6ab6ce4ca6 100644
--- a/htdocs/lib/databases/mysqli.lib.php
+++ b/htdocs/lib/databases/mysqli.lib.php
@@ -1011,7 +1011,7 @@ class DoliDb
 	{
 		$sql = "INSERT INTO user ";
 		$sql.= "(Host,User,password,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Index_Priv,Alter_priv,Lock_tables_priv)";
-		$sql.= " VALUES ('$dolibarr_main_db_host','$dolibarr_main_db_user',password('$dolibarr_main_db_pass')";
+		$sql.= " VALUES ('".addslashes($dolibarr_main_db_host)."','".addslashes($dolibarr_main_db_user)."',password('".addslashes($dolibarr_main_db_pass)."')";
 		$sql.= ",'Y','Y','Y','Y','Y','Y','Y','Y','Y')";
 
 		dol_syslog("mysqli.lib::DDLCreateUser", LOG_DEBUG);	// No sql to avoid password in log
@@ -1024,7 +1024,7 @@ class DoliDb
 
 		$sql = "INSERT INTO db ";
 		$sql.= "(Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv,Index_Priv,Alter_priv,Lock_tables_priv)";
-		$sql.= " VALUES ('$dolibarr_main_db_host','$dolibarr_main_db_name','$dolibarr_main_db_user'";
+		$sql.= " VALUES ('".addslashes($dolibarr_main_db_host)."','".addslashes($dolibarr_main_db_name)."','".addslashes($dolibarr_main_db_user)."'";
 		$sql.= ",'Y','Y','Y','Y','Y','Y','Y','Y','Y')";
 
 		dol_syslog("mysqli.lib::DDLCreateUser sql=".$sql);
diff --git a/htdocs/lib/databases/pgsql.lib.php b/htdocs/lib/databases/pgsql.lib.php
index 92eeb008d5c9edd60109383328a70158e2c49fac..3f54edfc021e7109fb64136bef7a95c45dbb3570 100644
--- a/htdocs/lib/databases/pgsql.lib.php
+++ b/htdocs/lib/databases/pgsql.lib.php
@@ -915,7 +915,7 @@ class DoliDb
 	 */
 	function DDLCreateUser($dolibarr_main_db_host,$dolibarr_main_db_user,$dolibarr_main_db_pass,$dolibarr_main_db_name)
 	{
-		$sql = "create user \"".$dolibarr_main_db_user."\" with password '".$dolibarr_main_db_pass."'";
+		$sql = "create user \"".addslashes($dolibarr_main_db_user)."\" with password '".addslashes($dolibarr_main_db_pass)."'";
 
 		dol_syslog("pgsql.lib::DDLCreateUser", LOG_DEBUG);	// No sql to avoid password in log
 		$resql=$this->query($sql);