Createuser: could not connect to database postgres: FATAL: role “tom” does not exist

后端 未结 9 1177
醉话见心
醉话见心 2020-12-04 06:16

I\'m trying to set up Postgres for the first time, and I need to create a user with permissions to read and create databases. However, when I use:

createuser          


        
相关标签:
9条回答
  • 2020-12-04 06:35

    Your error is posted in the official documentation. You can read this article.

    I have copied the reason for you (and hyperlinked the URLs) from that article:

    This will happen if the administrator has not created a PostgreSQL user account for you. (PostgreSQL user accounts are distinct from operating system user accounts.) If you are the administrator, see Chapter 20 for help creating accounts. You will need to become the operating system user under which PostgreSQL was installed (usually postgres) to create the first user account. It could also be that you were assigned a PostgreSQL user name that is different from your operating system user name; in that case you need to use the -U switch or set the PGUSER environment variable to specify your PostgreSQL user name

    For your purposes, you can do:

    1) Create a PostgreSQL user account:

    sudo -u postgres createuser tom -d -P
    

    (the -P option to set a password; the -d option for allowing the creation of database for your username 'tom'. Note that 'tom' is your operating system username. That way, you can execute PostgreSQL commands without sudoing.)

    2) Now you should be able to execute createdb and other PostgreSQL commands.

    0 讨论(0)
  • 2020-12-04 06:36

    1- Login as default PostgreSQL user (postgres)

    sudo -u postgres -i
    

    2- As postgres user. Add a new database user using the createuser command

    [postgres]$ createuser --interactive
    

    3-exit

    [postgres]$ exit
    
    0 讨论(0)
  • 2020-12-04 06:41

    If you don't want to change the authentication method (ident) and mess with pg_hba.conf use this:

    First login as the default user

     sudo su - posgres
    

    then access psql and create a user with the same name as the one you are login in

    postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;
    

    you can verify your user with the corresponding roles with

    postgres=#  \du
    

    Afer this you can create your database and verify it with

    psql -d dbName
    \l
    \q
    
    0 讨论(0)
提交回复
热议问题