diff --git a/handlers/mysql b/handlers/mysql
index 57b9ecfe52b2fb695279f8816ed4c77c83d5c080..4ac631b574bf9d2836b52d45c17246662d0571c2 100644
--- a/handlers/mysql
+++ b/handlers/mysql
@@ -22,7 +22,7 @@ if [ "$user" == "" ]; then
 	user=root;
 else
 	userset=true;
-	userhome=`grep "^$user:" /etc/passwd | awk -F: '{print $6}'`
+	userhome=`getent passwd "$user" | awk -F: '{print $6}'`
 	[ -f $userhome/.my.cnf ] || fatal "Can't find config file in $userhome/.my.cnf"
 fi
 
diff --git a/handlers/pgsql b/handlers/pgsql
index 11a5cfef772475fbed210b7e474212034cd255e8..c17caf8a1fc41585e1763542cd7e38a67068c65b 100644
--- a/handlers/pgsql
+++ b/handlers/pgsql
@@ -58,7 +58,7 @@ fi
 
 # give backup dir the good uid and permissions
 # (in respect to the vserver, if $usevserver)
-pguid=`grep '^postgres:' $vroot/etc/passwd | awk -F: '{print $3}'`
+pguid=`getent passwd postgres | awk -F: '{print $3}'`
 [ -n "$pguid" ] || \
     fatal "No user called postgres`[ $usevserver != 1 ] || echo \" on vserver $vsname\"`."
 debug "chown $pguid $vroot$backupdir"