Назад | Перейти на главную страницу

Как проверить, может ли вновь созданный пользователь взаимодействовать с базой данных PostgreSQL?

Мои настройки:

Я создал нового пользователя (jdoe) в моем локальном PostgreSQL с помощью следующей команды в оболочке psql:

CREATE USER jdoe WITH PASSWORD 'password';

Я также создал новую базу данных под названием mydb. Моя цель - дать пользователю jdoe полный доступ к базе данных mydb. Я сделал несколько вещей через графический интерфейс pgAdmin III и после запуска \l в оболочке psql я получаю следующий результат:

                                    List of databases
Name     |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges
--------------+----------+----------+-------------+-------------+---------------
mydb     | jdoe     | UTF8     | en_CA.UTF-8 | en_CA.UTF-8 | =CTc/mydb
                                                           : hmart=CTc/mydb
postgres | postgres | UTF8     | en_CA.UTF-8 | en_CA.UTF-8 | 

Показывает мой список пользователей (\du), Я получил:

            List of roles
 Role name | Attributes  | Member of 
-----------+-------------+-----------
 jdoe      |             | {}
 postgres  | Superuser   | {}
           : Create role   
           : Create DB    

Я не могу точно сказать из вышесказанного, была ли моя цель достигнута, но есть ли способ проверить, jdoe может общаться с базой данных mydb? Я тестирую его через настройки Django:

DATABASE_ENGINE = 'postgresql_psycopg2'           
DATABASE_NAME = 'mydb'      
DATABASE_USER = 'jdoe'       
DATABASE_PASSWORD = 'password'        
DATABASE_HOST = ''         
DATABASE_PORT = '' 

но я получаю следующую ошибку после python manage.py syncdb:

psycopg2.OperationalError: FATAL:  Ident authentication failed for user "jdoe"

Я сделал все вышеперечисленное на Win XP с последней установкой PostgreSQL, и все работает безупречно с Django. Я не уверен, что мне не хватает в Ubuntu.

Вероятно, вы настроили его в pg_hba.conf, чтобы локальные сокет-соединения должны использовать идентификацию авторизации, в то время как TCP-соединения с localhost являются доверенными. Прочтите документацию на pg_hba.conf для вашей версии, например, 8.4 Вот, и вы можете правильно настроить его для своей ситуации.

Это странно, установка DATABASE_HOST к localhost исправить проблему:

# settings.py
DATABASE_HOST = 'localhost'