Forum: Ruby on Rails PostgreSQL setup for Rails@Ubuntu

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F2b38ee793ba71b959938a2526146db4?d=identicon&s=25 Marco Lobbia (fangorn)
on 2016-02-24 17:56
(Received via mailing list)
For long term stability, I suppose I may take for granted that the LTS
Ubuntu version of PostgreSQL would be better then installing through the
PostgreSQL apt repository.
The documentation I found on post installation setup suggests that
configuration may not be so diffucult.

Nevertheless I have a question about PostgreSQL superuser properties.
All the information (see for instance at help.ubuntu.com
<https://help.ubuntu.com/community/PostgreSQL> and at digitalocean.com
<https://www.digitalocean.com/community/tutorials/h...)
seems to converge on the necessity of creating a database superuser with
login name that match my Ubuntu user name with:

sudo -u postgres createuser --superuser $USER

This, as far as I have understood, would allow the user and client
programs
to connect to the database without requiring a password: would that be
working for all my Rails applications too?
If instead I chose to set a password with:

sudo -u postgres psql

should this password match my Ubuntu user password or be different?
In case I chose a different password, I wonder in the first place what
advantages there would be in choosing my Ubuntu login name as PostgreSQL
superuser.
What is the best choice for Rails: no password, the same Ubuntu user
password or a different password?
Since in database.yml is recorded exactly this kind of sensitive
information, I suppose there might be security concerns after pushing
the
application to some Git repository hosting web site and to Heroku. Would
you rather suggest to edit .pgpass to keep sensitive information out of
the
*.yml file?

Finally, with PostgreSQL both in development and production, is the pg
gem
required?

I would really appreciate any help you can provide.
F2b38ee793ba71b959938a2526146db4?d=identicon&s=25 Marco Lobbia (fangorn)
on 2016-02-27 17:10
(Received via mailing list)
From 'man createuser':

       createuser creates a new PostgreSQL user (or more precisely, a
role). Only superusers and users with
       CREATEROLE privilege can create new users, so createuser must be
invoked by someone who can connect as a
       superuser or a user with CREATEROLE privilege.

When postgresql is installed, it also creates a user ‘postgres’ with
role
‘postgres’. It also creates a system account with same name ‘postgres’.
So this is why 'createuser' should be run as 'postgres' user.

It is possible to connect to postgresql only as a database user AND
through
an existing database.
During installation from the postgresql apt repository, postgresql only
creates the 'postgres' user and the 'postgres' database.
The 'psql' allow the current user to connect to the postgresql database
named after the user's name.
So, if the system user is 'dave' AND there is a 'dave' database it is
possible for 'dave' to connect to the 'dave' database with command
'psql'.
If 'dave' is also a database user but the database 'dave' was not
created,
for dave to connect to postgresql it is necessary to specify an existing
database with:

$ psql -d postgres


Alternatively, it is possible for dave to connect to postgresql
executing
the 'psql' command as the 'postgres' user with 'sudo':

$ sudo -u postgres psql
F2b38ee793ba71b959938a2526146db4?d=identicon&s=25 Marco Lobbia (fangorn)
on 2016-02-28 09:43
(Received via mailing list)
If posgresql is installed via PostgreSQL apt repository, in order for
Rails
to use the 'pg' gem it is also necessary to install the 'libpq-dev'
package, otherwise bundle install will fail. See at Stackoverflow Can't
find the 'libpq-fe.h header when trying to install pg gem.
<http://stackoverflow.com/questions/6040583/cant-fi...
This topic is locked and can not be replied to.