2016-03-21 2 views
1

У меня проблема с моей базой данных. Я установил postgreSQL 9.5 на свой сервер Ubuntu. Я изменил файл postgresql.conf, чтобы привязать сервер postgreSQL к локальному хосту. Это позволяет мне запускать pgAdmin и подключаться к моей базе данных, перенаправляя также порт 5432, где я запускаю свой postgreSQL.pgAdmin 9.5 не отображает все базы данных

Проблема, с которой я столкнулся, заключается в том, что я вижу только таблицу по умолчанию postgres, но не мои недавно созданные «игры» (я создал эту таблицу, запустив create database games с пользователем postgres, подключенным к серверу).

enter image description here

А вот мой снимок экрана приложения pgAdmin со всей стоимости имущества, которую я использую для подключения к серверу.

enter image description here

Как вы можете видеть из первой картины я использую то же разрешение, как для базы данных Postgres - это заготовка, которая должна предоставить доступ к каждому. Я знаю, что я должен изменить это позже и ограничить его для пользователя postgres, которого у меня есть, но пока я это сделаю. Как только мне удастся увидеть базу данных «игр», я начну ужесточать безопасность.

ОБНОВЛЕНИЕ Я предоставил весь доступ к базе данных «игры», которая видна прямо на третьем экране. Права доступа различны. Это не помогло мне, я все равно не увижу базу данных при подключении к серверу с помощью pgAdmin. Видел, что у кого-то была аналогичная проблема, и щелкните правой кнопкой мыши на сервере и нажмите «Новая база данных». Кажется, создается новая база данных, потому что, как вы можете видеть из pgAdmin, приложению удается найти таблицу оценки, которую я создаю внутри pgAdmin. Причина, по которой я верю, в том, что, поскольку запуск того же SQL, связанного с сервером postgres=# select * from score;, приводит к ERROR: relation "score" does not exist LINE 1: select * from score;.

enter image description here

ответ

1

Мне удалась найти проблему. Одна из моих проблем заключалась в том, что у меня был (не зная об этом) установленный сервер postgreSQL на моей машине. Кажется, я установил его с моей установкой pgAdmin. Поэтому каждый раз, когда я буду подключаться к своему серверу, я бы установил соединение с моим сервером localhost, а не с моим удаленным сервером. Поэтому я просто удалил сервер и установил только клиент pgAdmin.

Вторая проблема, я был в том, что файл /etc/postgresql/9.5/main/pg_hba.conf должен был быть изменен.Так я бегу:

sudo vi /etc/postgresql/9.5/main/pg_hba.conf

и изменил линию

# Database administrative login by Unix domain socket local all postgres peer

в

# Database administrative login by Unix domain socket local all postgres md5

После того, что было изменено, у меня было два рестарт конфигурацию, выполнив:

sudo /etc/init.d/postgresql reload

Я также хотел бы указать, что важно иметь пользователя postgres как пользователя unix и DB с одинаковыми паролями. Я нашел всю эту информацию here.

0

Попробуйте предоставление права доступа явно для новой таблицы.

Я считаю, что столбец привилегий пустого доступа означает, что у таблицы есть привилегии доступа по умолчанию. По умолчанию не может быть открытого доступа для таблиц, столбцов, схем и табличных пространств. Для получения дополнительной информации: http://www.postgresql.org/docs/9.4/static/sql-grant.html

+0

Я пробовал это, но это не принесло пользы. Я выполнил 'postgres = # предоставить все привилегии в играх баз данных для postgres;' и теперь база данных игр имеет права доступа «= Tc/postgres + postgres = CTc/postgres». И я до сих пор вижу только базу данных postgres, но ничего больше. –

+0

Если я делаю то же самое, что [здесь] (http://stackoverflow.com/questions/15754010/some-postgresql-databases-not-visible-through-clients-like-navicat-or-pgadmin), открывается база данных. Поэтому я пытаюсь понять, что результат «pg_database.datistemplate» установлен на «true». –

+0

После того, как я использовал «новую базу данных», база данных «игр» всегда видна. Но похоже, что это не та же база данных игр, что и указанная, когда я выполняю '\ l +'. Я не вижу базу данных комментариев для хранения игровых баллов для различных игр, например, она напечатана с помощью «\ l +». –