我正在关注这篇博文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
您可以使用两种方法来配置。两种方法都需要创建用户和一个数据库。
使用 createuser 和 createdb,
$ sudo -u postgres createuser -s $USER $ createdb mydatabase $ psql -d mydatabase
使用 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
用户。
- 它通常被操作系统锁定。任何人都不能以 的身份“登录”操作系统
postgres
。您应该拥有 root 权限才能以 的身份进行身份验证postgres
。 - 它通常不受密码保护,并委托给主机操作系统。这是一个好事。这通常意味着,为了以
postgres
与 SQL Server 相同的 PostgreSQL身份登录SA
,您必须拥有对底层数据文件的写访问权限。而且,这意味着您通常可以造成破坏。 - 通过禁用此功能,您可以消除通过指定超级用户进行暴力攻击的风险。隐藏和模糊超级用户的名称有好处。