diff --git a/src/bin/scripts/createdb.c b/src/bin/scripts/createdb.c
new file mode 100644
index 9b72eac..544f2f6
*** a/src/bin/scripts/createdb.c
--- b/src/bin/scripts/createdb.c
*************** main(int argc, char *argv[])
*** 192,197 ****
--- 192,202 ----
  
  	appendPQExpBuffer(&sql, ";\n");
  
+     /*
+      * Connect to the 'postgres' database by default, except have
+      * the 'postgres' user use 'template1' so he can create the
+      * 'postgres' database.
+      */
  	conn = connectDatabase(strcmp(dbname, "postgres") == 0 ? "template1" : "postgres",
  						   host, port, username, prompt_password, progname);
  
*************** main(int argc, char *argv[])
*** 208,219 ****
  	}
  
  	PQclear(result);
- 	PQfinish(conn);
  
  	if (comment)
  	{
- 		conn = connectDatabase(dbname, host, port, username, prompt_password, progname);
- 
  		printfPQExpBuffer(&sql, "COMMENT ON DATABASE %s IS ", fmtId(dbname));
  		appendStringLiteralConn(&sql, comment, conn);
  		appendPQExpBuffer(&sql, ";\n");
--- 213,221 ----
*************** main(int argc, char *argv[])
*** 231,239 ****
  		}
  
  		PQclear(result);
- 		PQfinish(conn);
  	}
  
  	exit(0);
  }
  
--- 233,242 ----
  		}
  
  		PQclear(result);
  	}
  
+ 	PQfinish(conn);
+ 
  	exit(0);
  }
  
diff --git a/src/bin/scripts/dropdb.c b/src/bin/scripts/dropdb.c
new file mode 100644
index 1cf18fd..48f73ae
*** a/src/bin/scripts/dropdb.c
--- b/src/bin/scripts/dropdb.c
*************** main(int argc, char *argv[])
*** 113,118 ****
--- 113,123 ----
  	appendPQExpBuffer(&sql, "DROP DATABASE %s;\n",
  					  fmtId(dbname));
  
+     /*
+      * Connect to the 'postgres' database by default, except have
+      * the 'postgres' user use 'template1' so he can drop the
+      * 'postgres' database.
+      */
  	conn = connectDatabase(strcmp(dbname, "postgres") == 0 ? "template1" : "postgres",
  						   host, port, username, prompt_password, progname);
  
