我刚刚安装了postgresql,在安装过程中我指定了密码x。 当我尝试做createdb并指定任何密码时,我得到消息:
createdb:无法连接数据库postgres: FATAL:用户密码验证失败
createuser也一样。
我该怎么开始呢? 我可以将自己作为用户添加到数据库吗?
我刚刚安装了postgresql,在安装过程中我指定了密码x。 当我尝试做createdb并指定任何密码时,我得到消息:
createdb:无法连接数据库postgres: FATAL:用户密码验证失败
createuser也一样。
我该怎么开始呢? 我可以将自己作为用户添加到数据库吗?
当前回答
这是我的解决方案:
su root
su postgres
psql
其他回答
在Linux下,PostgresQL通常配置为允许根用户以postgres超级用户postgres的身份从shell(控制台或ssh)登录。
$ psql -U postgres
然后像往常一样创建一个新数据库:
CREATE ROLE myuser LOGIN password 'secret';
CREATE DATABASE mydatabase ENCODING 'UTF8' OWNER myuser;
这应该在不接触pg_hba.conf的情况下工作。如果你想通过网络使用一些GUI工具来做到这一点,那么你就需要修改pg_hba.conf。
有两种方法可以使用。两者都需要创建用户和数据库。
Using createuser and createdb, $ sudo -u postgres createuser --superuser $USER $ createdb mydatabase $ psql -d mydatabase Using the SQL administration commands, and connecting with a password over TCP $ sudo -u postgres psql postgres And, then in the psql shell CREATE ROLE myuser LOGIN PASSWORD 'mypass'; CREATE DATABASE mydatabase WITH OWNER = myuser; Then you can login, $ psql -h localhost -d mydatabase -U myuser -p <port> If you don't know the port, you can always get it by running the following, as the postgres user, SHOW port; Or, $ grep "port =" /etc/postgresql/*/main/postgresql.conf
旁注:postgres用户
我建议不要修改postgres用户。
It's normally locked from the OS. No one is supposed to "log in" to the operating system as postgres. You're supposed to have root to get to authenticate as postgres. It's normally not password protected and delegates to the host operating system. This is a good thing. This normally means in order to log in as postgres which is the PostgreSQL equivalent of SQL Server's SA, you have to have write-access to the underlying data files. And, that means that you could normally wreck havoc anyway. By keeping this disabled, you remove the risk of a brute force attack through a named super-user. Concealing and obscuring the name of the superuser has advantages.
您可能需要更新pg_hba.conf文件。该文件控制哪些用户可以从哪些IP地址登录。我认为postgres用户在默认情况下是被锁定的。
这是我的解决方案:
su root
su postgres
psql
Note: textdb is the database which you are going to explore with 'alex' user
root@kalilinux:~# sudo su - postgres
postgres=# psql
postgres=# create database testdb;
postgres=# create user alex with password 'alex';
postgres=# GRANT ALL PRIVILEGES ON DATABASE testdb TO alex;`enter code here`