|
|
|
|
@ -24,6 +24,7 @@ main(int argc, char *argv[]) |
|
|
|
|
{"host", required_argument, NULL, 'h'}, |
|
|
|
|
{"port", required_argument, NULL, 'p'}, |
|
|
|
|
{"username", required_argument, NULL, 'U'}, |
|
|
|
|
{"role", required_argument, NULL, 'g'}, |
|
|
|
|
{"no-password", no_argument, NULL, 'w'}, |
|
|
|
|
{"password", no_argument, NULL, 'W'}, |
|
|
|
|
{"echo", no_argument, NULL, 'e'}, |
|
|
|
|
@ -57,6 +58,7 @@ main(int argc, char *argv[]) |
|
|
|
|
char *host = NULL; |
|
|
|
|
char *port = NULL; |
|
|
|
|
char *username = NULL; |
|
|
|
|
SimpleStringList roles = {NULL, NULL}; |
|
|
|
|
enum trivalue prompt_password = TRI_DEFAULT; |
|
|
|
|
bool echo = false; |
|
|
|
|
bool interactive = false; |
|
|
|
|
@ -83,7 +85,7 @@ main(int argc, char *argv[]) |
|
|
|
|
|
|
|
|
|
handle_help_version_opts(argc, argv, "createuser", help); |
|
|
|
|
|
|
|
|
|
while ((c = getopt_long(argc, argv, "h:p:U:wWedDsSaArRiIlLc:PEN", |
|
|
|
|
while ((c = getopt_long(argc, argv, "h:p:U:g:wWedDsSaArRiIlLc:PEN", |
|
|
|
|
long_options, &optindex)) != -1) |
|
|
|
|
{ |
|
|
|
|
switch (c) |
|
|
|
|
@ -97,6 +99,9 @@ main(int argc, char *argv[]) |
|
|
|
|
case 'U': |
|
|
|
|
username = pg_strdup(optarg); |
|
|
|
|
break; |
|
|
|
|
case 'g': |
|
|
|
|
simple_string_list_append(&roles, optarg); |
|
|
|
|
break; |
|
|
|
|
case 'w': |
|
|
|
|
prompt_password = TRI_NO; |
|
|
|
|
break; |
|
|
|
|
@ -302,6 +307,19 @@ main(int argc, char *argv[]) |
|
|
|
|
appendPQExpBufferStr(&sql, " NOREPLICATION"); |
|
|
|
|
if (conn_limit != NULL) |
|
|
|
|
appendPQExpBuffer(&sql, " CONNECTION LIMIT %s", conn_limit); |
|
|
|
|
if (roles.head != NULL) |
|
|
|
|
{ |
|
|
|
|
SimpleStringListCell *cell; |
|
|
|
|
appendPQExpBufferStr(&sql, " IN ROLE "); |
|
|
|
|
|
|
|
|
|
for (cell = roles.head; cell; cell = cell->next) |
|
|
|
|
{ |
|
|
|
|
if (cell->next) |
|
|
|
|
appendPQExpBuffer(&sql, "%s,", fmtId(cell->val)); |
|
|
|
|
else |
|
|
|
|
appendPQExpBuffer(&sql, "%s", fmtId(cell->val)); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
appendPQExpBufferStr(&sql, ";\n"); |
|
|
|
|
|
|
|
|
|
if (echo) |
|
|
|
|
@ -334,6 +352,7 @@ help(const char *progname) |
|
|
|
|
printf(_(" -D, --no-createdb role cannot create databases (default)\n")); |
|
|
|
|
printf(_(" -e, --echo show the commands being sent to the server\n")); |
|
|
|
|
printf(_(" -E, --encrypted encrypt stored password\n")); |
|
|
|
|
printf(_(" -g, --role=ROLE new role will be a member of this role\n")); |
|
|
|
|
printf(_(" -i, --inherit role inherits privileges of roles it is a\n" |
|
|
|
|
" member of (default)\n")); |
|
|
|
|
printf(_(" -I, --no-inherit role does not inherit privileges\n")); |
|
|
|
|
|