PG Restore function not working on localhost - ruby-on-rails

I'm trying to restore a backup to my localhost machine to review the data - so that I can actually make sure the backup is working. I'm using Heroku, postgres, and rails.
I clean installed the app, so there is no data in the localhost database. I ran db:reset, and db:migrate.
Here is the string I'm trying to use for pg_restore:
pg_restore --verbose --clean --no-acl --no-owner -h localhost -p 3000 -U ian -d backup_production latest.dump
The error I receive says:
"connection to database "backup_production" failed: server closed the connection unexpectedly"
I've never had to do this before, so any help would be appreciated. I assume that development is what localhost uses (instead of test or production)?
I'm not sure what I'm missing, but I'll answer any question you may have.
Thanks a lot.
edit,. Here is a question, for this database string I assumed that I need to to use all the localhost information, because I created a backup using heroku capture/download. Am I wrong in that assumption? Should I instead be using the database name and port, etc, from the heroku credentials?

Turns out, I shouldn't have added the port. Removing -p 3000 , made this command work.

Try this
Edit the postgre configuration file typing in terminal
sudo gedit /etc/postgresql/POSTGRE_VERSION/main/pg_hba.conf
Then change your configuration to this
# Database administrative login by Unix domain socket
local all all trust
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
Restart your postgre server
sudo /etc/init.d/postgresql restart
This should be the solution to access without password

Related

Zabbix frontend Error connecting to database

I am having a problem at zabbix web interface, it won't connect to the database as I receive this error: Error connecting to database.
Here are two screenshots from both files:
/etc/zabbix/zabbix_server.conf
/usr/share/zabbix/conf/zabbix.conf.php.example
Any help?
Thanks!
Can you access to a shell and connect to the zabbix database directly ?
In your configuration files, it seems that you use PostgreSQL.
It is written that you have to indicate the DBSchema variable if you use PostgreSQL.
However you didn't declare it.
In your case, the password should be in quotation marks: DBPassword="zabbix"
I faced the same problem. It is resolved by changing "Database host" from localhost to 127.0.0.1 in DB connection and changing the pg_hba.conf as below
host all all 127.0.0.1/32 password
Zabbix GUI
I have same problem with Centos+Postgre+Zabbix stack. And problem was with ident auth:
You need go to /var/lib/pgsql/data/pg_hba.conf (default path)
and change ident in this:
host all all 127.0.0.1/32 ident
host all all ::1/128 ident
to md5
After this restart postgresql service and you can check connection by command:
psql -h localhost -U <your_zabbixdb_user> <your_zabbix_db>

Unable to get through Postgres connection with ActiveRecord

For sake of Lord, I'm unable to understand why postgres is complaining about password authentication(using ActiveRecord).
sudo -u postgres psql rdb
This work (no password is asked)
local all postgres peer
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
But when connecting with an ORM like ActiveRecord it complains.
ActiveRecord::Base.establish_connection(adapter: 'postgresql', username: 'postgres', database: 'rdb')
The server requested password-based authentication, but no password was provided.
This a basic setup and I was expecting this to work all the time. My last resort would be to allow trust or md5(on pg_hba.conf) but before I move ahead with that can some please provide me with some pointer as to why the above did not work.
Just an update postgres is running at localhost
The sudo command is triggering the local all postgres peer restriction, not asking for a password. The ActiveRecord configuration with the postgresql adapter uses this:
:host - Defaults to a Unix-domain socket in /tmp. On machines without
Unix-domain sockets, the default is to connect to localhost.
Do you have working sockets on your machine? Is /tmp writeable? It might be the case that a TCP connection to 127.0.0.1 is used, triggering the password check as indicated by md5.

host can not recognized in postgres

We have seen a issue in log
FATAL: lock file "/tmp/.s.PGSQL.5432.lock" already exists
HINT: Is another postmaster (PID 4696) using socket file "/tmp/.s.PGSQL.5432"?
LOG: could not bind IPv4 socket: Address already in use
We have deleted /tmp/.s.PGSQL.5432.lock
We restarted the postgres service the service restarted
But the psql -h localhost -d database -U newuser
shows error role 'newuser' does not exists
but if we connect without host
psql -d database -U newuser
It worked, How can We work with host options ?
Is there we ,missing somthing after deleting tmp file?
Same as the last one, you have two instances of PostgreSQL running on the machine.
You delete the socket file rather than shutting down the instance. This allows your second instance to start, but it's only listening on the unix socket. Presumably listen_addresses is unset/empty so it doesn't attempt to bind to a TCP/IP socket, since it'd fail if it tried and port 5432 was already in use.
The other instance is still running and still listening on port 5432 for TCP/IP connections. When you specify -h localhost you get a TCP/IP connection instead of the default unix socket connection, so you are connecting to the other instance of PostgreSQL on your system.
All your problems are caused by going around deleting and killing things rather than identifying the underlying problem - the second PostgreSQL instance - and addressing that.

Rails PostgreSQL - Changing socket name/location

I have changed the port of my PostgreSQL server, hence the socket it creates is no longer named ".s.PGSQL.5432".
Is there a way to update/force Rails/the pg gem to change the socket name it looks for? I have tried uninstalling/reinstalling the pg gem in line with recommendations but it still tries to look for a socket named .s.PGSQL.5432, not the .s.PGSQL.50000 that it should and as per the database.yml comments, the 'socket' config line does not apply for PostgreSQL.
I can obviously create a symlink, but I was hoping there was a more elegant way around this.
Change the port in your database.yml
PostgreSQL supports two kinds of connections as you are aware: tcp/ip and unix domain sockets. Both can use host and port but use them in different ways.
When working with TCP/IP, host and port have the standard meanings with regard to networs running TCP/IP.
When working with Unix domain sockets, host provides the directory, and port provides the numeric portion of the socket name. Paths should be absolute. The same should hold true for any libpq-based connection (including through the pg gem), so consider this:
psql -h /tmp -p 5000
This gives an error message of:
$ psql -h /tmp -p 5000
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5000"?
Similarly:
$ psql -h /foo -p 50000
psql: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/foo/.s.PGSQL.50000"?

psql: FATAL: Peer authentication failed for user "blah"

On CentOS, I am trying to use rake to migrate data from sqlite3 to postgresql.
When I try to connect to PostgreSQL using the command line:
psql -d <db> -U <user> -W
I get:
psql: FATAL: Peer authentication failed for user "blah"
For testing I even set method to trust for psql. Here are the contents of my pg_hba.conf:
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
Any ideas what might be wrong?
Thanks
Restart PostgreSQL and if that fails post the full pg_hba.conf for us to look at.
Either PostgreSQL has not reloaded this file or you are looking at the wrong pg_hba.conf.

Resources