diff --git a/contrib/passwordcheck/passwordcheck.c b/contrib/passwordcheck/passwordcheck.c
index 9d8c58ded0..572cf8e7a8 100644
--- a/contrib/passwordcheck/passwordcheck.c
+++ b/contrib/passwordcheck/passwordcheck.c
@@ -30,7 +30,7 @@ PG_MODULE_MAGIC;
 static check_password_hook_type prev_check_password_hook = NULL;
 
 /* passwords shorter than this will be rejected */
-#define MIN_PWD_LENGTH 8
+extern int min_password_lenght;
 
 extern void _PG_init(void);
 
@@ -95,7 +95,7 @@ check_password(const char *username,
 #endif
 
 		/* enforce minimum length */
-		if (pwdlen < MIN_PWD_LENGTH)
+		if (pwdlen < min_password_lenght)
 			ereport(ERROR,
 					(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
 					 errmsg("password is too short")));
diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c
index acbcb8bb81..5dc74b2c2d 100644
--- a/src/backend/utils/misc/guc.c
+++ b/src/backend/utils/misc/guc.c
@@ -160,6 +160,10 @@ char	   *GUC_check_errmsg_string;
 char	   *GUC_check_errdetail_string;
 char	   *GUC_check_errhint_string;
 
+/* min_password_lenght minimum password length */
+
+int min_password_lenght;
+
 static void do_serialize(char **destptr, Size *maxbytes, const char *fmt,...) pg_attribute_printf(3, 4);
 
 static void set_config_sourcefile(const char *name, char *sourcefile,
@@ -3653,6 +3657,17 @@ static struct config_int ConfigureNamesInt[] =
 		NULL, NULL, NULL
 	},
 
+	{
+		{"min_password_lenght", PGC_USERSET, QUERY_TUNING_GEQO,
+			gettext_noop("Minimum password length."),
+			NULL,
+			GUC_EXPLAIN
+		},
+		&min_password_lenght,
+		8, 0, INT_MAX,
+		NULL, NULL, NULL
+	},
+
 	/* End-of-list marker */
 	{
 		{NULL, 0, 0, NULL, NULL}, NULL, 0, 0, 0, NULL, NULL, NULL
