配置 PostgreSQL

配置 PostgreSQL

我正在关注这篇博文http://hendrelouw73.wordpress.com/2012/11/14/how-to-install-postgresql-9-1-on-ubuntu-12-10-linux/在 ubuntu 上安装 postgres。这是第二步和第三步。

STEP 2: INSTALL POSTGRESQL ON YOUR SYSTEM


sudo apt-get update
sudo apt-get install postgresql-9.1

STEP 3: CONFIGURE YOUR POSTGRESQL PASSWORD

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'your_password';

不过,我还在看一个在 ubuntu 上安装 postgres 的 RailsCast。首先,Ryan Bates 这样做

root@li349-144:~# apt-get install postgresql libpq-dev

然后他设置这样的密码 root@li349-144:~# sudo -u postgres psql

terminal
postgres=# \password
Enter new password: 
Enter it again:

因此,一个很大的区别在于密码的配置方式,Railscast 不会触及template博客文章第 3 步中描述的内容

查看在 ubuntu 上安装 postgres 的说明https://help.ubuntu.com/community/PostgreSQL,它与 Railscasts 类似,因为它没有template创建用户的引用

你能解释一下区别吗?我是否应该采取这一步?步骤 3:配置你的 POSTGRESQL 密码

sudo -u postgres psql template1
ALTER USER postgres with encrypted password 'your_password';

答案1

这两种方法没有真正的区别。用户/登录角色和密码存储在服务器范围内,而不是数据库范围内。换句话说,密码用于连接到服务器,因此连接到哪个数据库并不重要。命令

sudo -u postgres psql template1 (感谢 Daniel Vérité 的评论)

实际上是告诉系统切换到用户 postgres 并运行 CLI 客户端 (psql) 以连接到服务器并使用“template1”数据库。如果未指定用户和/或数据库名称,则 psql 尝试以当前用户身份连接并“使用”与当前用户同名的数据库(在本例中为 postgres - 这使得“template”参数变得多余)

以下是上述命令逐步执行的操作:

sudo -u postgres这将切换到 postgres 用户。请注意 sudo 中没有 -p 参数。这很重要,因为“操作系统用户 postgres”(没有密码,其唯一目的是拥有正在运行的服务器进程)与“数据库用户 postgres”(数据库根用户或数据库管理员,绝对需要密码)不同。

psql --username=postgres --database=template1这将使用数据库用户名 postgres 和数据库模板 1 连接到本地主机。

为了您的目的,此行可以缩写为

sudo -u postgres psql

ALTER USER postgres with encrypted password 'your_password';

这将更改为用户 postgres 并以用户 postgres 的身份连接到 localhost 名为 postgres 的数据库,然后设置密码。

如果您需要进一步说明,请询问。我很乐意提供帮助。

关于模板数据库的简要说明。创建新数据库时,postgres 使用名为 的模板template1。这类似于在 Linux 中创建用户帐户时用于设置用户默认值的骨架文件。它通常由 dba 修改,以确保某些工具和行为在整个服务器范围内强制执行。但1你可能会问,为什么是 。好吧,还有另一个名为 的模板数据库template0,它是受保护的“干净的”副本,template1以防万一出现问题。这里有一个维基页面描述了这种情况。

答案2

不要这样做..

terminal
postgres=# \password
Enter new password: 
Enter it again:

你打开了不该打开的用户。相反,(我的答案的副本)

配置 PostgreSQL

这是我原始帖子的副本

您可以使用两种方法来配置。两种方法都需要创建用户一个数据库。

  1. 使用 createuser 和 createdb

    $ sudo -u postgres createuser -s $USER
    $ createdb mydatabase
    $ psql -d mydatabase
    
  2. 使用 SQL 管理命令并通过 TCP 使用密码连接

    $ sudo -u postgres psql postgres
    

    然后在 psql shell 中

    CREATE ROLE myuser LOGIN PASSWORD 'mypass';
    CREATE DATABASE mydatabase WITH OWNER = myuser;
    

    然后你就可以登录了,

    $ psql -h localhost -d mydatabase -U myuser -p <port>
    

    如果你不知道端口号,你可以以用户身份运行以下命令来获取端口号postgres

    SHOW port;
    

    或者,


    $ grep "port =" /etc/postgresql/*/main/postgresql.conf

旁注:postgres用户

我建议不是修改postgres用户。

  1. 它通常被操作系统锁定。任何人都不能以 的身份“登录”操作系统postgres。您应该拥有 root 权限才能以 的身份进行身份验证postgres
  2. 它通常不受密码保护,并委托给主机操作系统。这是一个好事。这通常意味着,为了以postgres与 SQL Server 相同的 PostgreSQL身份登录SA,您必须拥有对底层数据文件的写访问权限。而且,这意味着您通常可以造成破坏。
  3. 通过禁用此功能,您可以消除通过指定超级用户进行暴力攻击的风险。隐藏和模糊超级用户的名称有好处。

相关内容