Database not showing with pgAdmin4 - postgresql

I created a database using pqsl in the command line of my Mac with tables and users. Yet, when I connect to my psql database using pgAdmin4 it doesn't show my database?
Registered a server with name localhost.
Set the username to match the name of a user in the database I create using the command line.
Host name set to localhost.
Maintenance Database was set to the name of my database.
Set role to the same name as the user.
Tap Save.
Then under databases I don't find the name of my database at all, just api with none of my created tables??
Thanks for any help!

Related

FATAL: password authentication failed for user "postgres" While connecting to postgres

I tried to create server it it says:
Unable to connect to server:
FATAL: password authentication failed for user "postgres"
https://prnt.sc/ric1vl
What operating system are you using? maybe you need to change the password of the postgres user. In my case I use Debian GNU Linux, to change the password of the postgres user, I do it in the following way:
root#alpha:~$ passwd postgres
and then I enter a new password for the user.
Could you also verify that the postgres user has permission to connect to the server? To do this, you can check the pg_hba.config file in the PostgreSQL. installation directory.
root#alpha:~$ nano /etc/postgresql/11/main/pg_hba.conf
By default PostgreSQL, only allows connections from local addresses (localhost)
Make sure to have your local postgres server running
Hit pgadmin tool connect to server and to create database
Right-click on the server button to your left, select create then server, insert name of the server, make sure it is as descriptive as possible, that way you can find your way back to if you remember
Move to connection tab; host name is the server where the SQL database is running, most likely you will be starting with your machine as database(db), insert localhost or 127.0.0.1.
leave default port as it is '5432'
maintenance db leave as 'postgres'
username leave as default 'postgres'
password : same as you registered with during installation
To your left, you should see the database under 'server', you should see the postgres default created underlink databases.
Right click on the databases button and select create, then database, insert your descriptive database name, click save.
Click on your new database, roll down, highlight Schema, go to Tools, select Query Tool...
You can go ahead to create or import tables as you deem fit.
EMPHASIS SHOULD BE ON THE PASSWORD, IT MUST BE SAME AS USED DURING INSTALLATION

Best Practice of running postgres in Ubuntu?

I just installed postgresql in Ubuntu 18.04 and been going through the official guide. Things I understand:
The installation comes with the default postgres user
We should not create databases with this default user
Instead we should create a different user
The questions I have are:
Why is this so?
Should the new user name I create be same as my ubuntu user $(whoami) ? Or should it be different ?
Should this new user be a superuser ?
When I have to delete or create databases/tables, do I have to log in to this newly created user or the default postgres user?
You should read the documentation, this is no substitute.
It is ok to use the user postgres to create databases.
Ideally there should be no remote connections with user postgres (block it in pg_hba.conf).
Never let an application connect as superuser.
You should create other database users that are not superusers to create objects and work with them.
The name of the database users has no connection to the name of your operating system users.
For maximum safety, create objects with one user and let your application connect with a different user that has the required permissions on the objects.

Postgresql Ubuntu strange behaviour (version incompatibility?)

I'm trying to run a postgresql Database on Ubuntu 16.04 LTS.
First I installed postgres using sudo apt-get install postgresql which installed version 9.5.1. I then created another user and a new database. I've granted all privileges for the new database to new new user and set the owner to the new user also.
I connected to the new database and filled it by restoring an plain backup (dump) I've created from another database (which has postgresql version 9.2) by using \i /path/to/dump.sql. I got no errors, and when I then typen \dt I got the list with the tables.
The problem is: When I now disconnect (\q) and re-connect (same as I connected before, sudo psql -U "username" dbname) and type \dt again, it says "No relations found". When I try to fill it again, I get a bunch of errors like "Relation relationname already exists".
Another problem/symptom appears when I try to use pgAdmin (installed via sudo apt-get install pgadmin3). When trying to connect using localhost, I can't connect using the newly created user (which which I can connect from the terminal). But I can connect using postgres with the password I set via Terminal. I do not see any DB I manually create from command line from pgAdmin tho.
So yeah, my guess is that at least one problem may be version incompatibility between 9.2 and 9.5. Is there any way to test/fix this? But I also think there should be other problems.
What you describe may happen if the SQL dump contains a SET search_path TO...command that sets it to a different value than what your user has by default.
So not only it will create its tables and other objects in that schema, but it will leave that search_path for the rest of the session, so when you do \dt in that same session, it does see and list the newly created tables.
But when you quit and reenter psql, this search_path is not longer in effect, you're back to the default search_path of your user, which supposedly doesn't reach the schema, so \dt no longer "sees" any table.
You can use show search_path to check this setting in a psql session, and grep "SET search_path" in the SQL file to check what it's being set to.
Per comment, it appears to be the case: the dump creates the tables into a schema that is outside of the user's default search path.
A possible solution for that user to work seamlessly would be to update its search path so that it always reaches this schema first. This can be done with:
ALTER USER username SET search_path TO schema1,"$user",public;
where schema1 is what the SQL dump refers to and where it created the tables.

Postgres accepts any password

I have the following code which connects to a database on my remote server (the connection script resides on the same server):
Database::$ErrorHandle = new PDO('pgsql:host=111.222.33.44;dbname=mydatabase;', 'postgres', 'mypassword', $db_settings);
The problem is I can change the password to be anything at all and the connection is still made! Like seriously what the hell!?!
Can my database be connected to (providing you know the IP and db name) by anyone from a PHP script running on a different server?
How can I enforce passwords, I have looked at the following stack overflow page and did what they said but still no luck:
How to change PostgreSQL user password?
I am running Ubuntu 12.04 server with PHP 5.5 and Apache2
Off course your postgresql database can be properly configured to only connect with authenticated users even certain users (Roles in Postgres) from certain IPs/sockets.
Some considerations:
Do you see data? Or can you just connect to the server? Can you list the databases?
Look at your pg_hba.conf and setup the proper permissions, per role per database per source
Did you grant access to the mydatabase to everyone? Which roles did you grant access?
Does the database have its tables in the public scheme? And granted access to the public?
Yes, with this configuration everyone who knows your IP and database name can connect to your database.

User authorization in DB2

I am using win Vista, and I am trying to backup some Database under DB2.
I am logged in using the Administrator user, and whenever I try to issue the backup command in the "command line processor", I get the following message:
SQL1092N "ADMINISTRATOR" does not have the authority to perform the requested command. SQLSTATE=00000
BTW, I have created a username/password pair (db2admin) while installing the DB2 server.
So, Will this problem will be get solved if I use the db2admin user? And how to connect to the server (local server BTW) using the db2admin user ?
I had this problem recently and this seemed to do the job:
Attach to your [local] node. (the value of your DB2INSTANCE environ variable, mine was 'DB2'):
attach to DB2 user db2admin using mypassword;
If this isn't enough (it didn't seem to be with me), you can also specify the user and password with backup and restore commands:
restore database mydbname user db2admin using mypassword from C:\BACKUPS taken at 20100823132457;
Or manually create the db2admin user with a password on Windows. But I'm not sure if that's the correct option here.