В postgresql: CREATE ROLE работает, но createuser не работает - PullRequest
0 голосов
/ 10 января 2019

Я новичок в PostgreSQL и следовал этому учебнику. Я могу отлично создавать роли, но когда я пытался использовать команды createuser и dropuser, он просто ничего не делал, и новые пользователи не создавались и не удалялись. Я пытался использовать его с точкой с запятой и без нее в конце, первая дает синтаксическую ошибку, а вторая просто ничего не делает.

    postgres-# createuser joe;
ERROR:  syntax error at or near "createuser"
LINE 1: createuser 
        ^
postgres=# ;
postgres=# createuser joe;
ERROR:  syntax error at or near "createuser"
LINE 1: createuser joe;
        ^
postgres=# createuser joe
postgres-# \du
                                   List of roles
 Role name |                         Attributes                         | Member of 
-----------+------------------------------------------------------------+-----------
 admin     | Superuser, Create DB                                       | {}
 john      | Superuser, Create role, Create DB, Replication             | {}
 guest     |                                                            | {}
 guest3    |                                                            | {}
 postgres  | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

Я тоже пробовал это:

createuser --interactive joe 

Это тоже ничего не сделало.

Как правильно использовать createuser? Я использую следующую версию.

postgres (PostgreSQL) 11.1

Ответы [ 3 ]

0 голосов
/ 10 января 2019

Внутри инструмента psql вам нужно вводить команды SQL. Чтобы создать пользователя из SQL, вам нужно использовать create user.

Возможно, в учебнике была запущена утилита командной строки createuser (не команда SQL)

Чтобы понять почему:

postgres=# createuser joe

ничего не делал, см .: Почему в psql некоторые команды не действуют?

0 голосов
/ 10 января 2019

Команду createuser нужно запускать в консоли (bash). Не нужно делать это в PSQL. Пример:

createuser -h localhost -p 5432 joe
0 голосов
/ 10 января 2019

Я думаю, вам нужен пробел между вашей командой, что-то вроде следующего:

CREATE USER youruser WITH ENCRYPTED PASSWORD 'yourpass';
GRANT ALL PRIVILEGES ON DATABASE yourdbname TO youruser;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...