在rails上为postgresql创建用户



我为rails的数据库选择了postgresql,但当我尝试运行rake db:create:all时,遇到了一个明显常见的错误,即"FATAL:role"app"不存在"。我找到了两种解决方案,但不确定哪一种是正确的。一个网站对说

su -  
su - postgres
createuser -s Application
exit
exit  

而另一个对说

su - postgres
create role myapp with createdb login password 'password1'

两者有什么区别?我应该用哪一个?

您应该仅将其用于开发环境

登录postgres控制台:

$> sudo -u postgres psql

创建名为rails、密码为的用户

=# create user rails with password 'password';  

使用户rails成为超级用户:

=# alter role rails superuser createrole createdb replication; 

使用所有者rails:创建数据库projectname

=# create database projectname owner rails;

database.yml:中

development:
  adapter: postgresql
  encoding: unicode
  database: projectname
  pool:
  username: rails
  password: password

要创建用户,请在控制台中键入

createuser

输入用户名并使其成为超级用户

此外,您还可以通过添加pwprompt来添加密码,以创建像这样的用户

createuser --pwprompt

接下来,您输入pgsql作为postgres并创建数据库

sudo-u postgres psql postgres创建数据库数据库名称所有者用户名;

希望它能帮助

有关更多详细信息,请参阅此网站https://www.digitalocean.com/community/articles/how-to-install-and-use-postgresql-on-ubuntu-12-04

第二个选项无效。这行不通。


第一个:

我不推荐第一个步骤,根据您的操作系统,有些步骤是不必要的。

  1. 您成为超级用户,并使shell成为登录shell(就像您将直接登录一样)。我认为这是有风险的,没有必要。为什么不直接向postgre用户发送su(这只是设置问题)
  2. 您成为postgre并使shell成为登录shell
  3. 您可以在PostgreSQL中创建一个超级用户应用程序。因此,您拥有应用程序的超级用户权限。我认为这也有风险。应用程序的超级用户非常糟糕。通常,您需要createdbloginpassword才能开始,如果需要,可以稍后添加/撤销其他权限
  4. 您退出postgresshell会话
  5. 您退出超级用户shell会话

第二个:

这是不对的。第二步忘记执行psql命令。第二个命令将成为第三个命令。会是那样的。

  1. 您成为postgres并使shell成为登录shell
  2. 默认情况下,您使用用户postgres登录到postgres命令shell
  3. 您可以创建一个角色myapp,选项为createdblogin和(通常默认情况下已加密)password,值为password1

不同之处在于,第一个向应用程序角色授予超级用户权限,而第二个仅向myapp角色授予列出的权限
第二种选择更安全。在这两个选项中,选择seoconde选项。


注意:在PostgreSQL中,用户只是一个具有login权限的角色。这更多的是一种概念上的区别。据我所知,从技术上讲,用户和角色基本相同。

最新更新