Ошибка при подключении к базе данных

#python #linux #psycopg2

#python #linux #psycopg2

Вопрос:

Я не могу подключиться к базе данных в Linux с помощью psycopg2. У меня установлен postgresql в Linux, и мой код:

 import psycopg2

def testEgg():

    conn = psycopg2.connect("dbname = myDatabase user = postgres port = 5432")

    cur = conn.cursor()
    cur.execute("CREATE TABLE egg ( num integer, data varchar);")
    cur.execute("INSERT INTO egg values ( 1, 'A');")
    conn.commit()

    cur.execute("SELECT num from egg;")
    row = cur.fetchone()

    print row

    cur.close()
    conn.close()

testEgg()   
  

И я получил ошибку:

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

Этот код хорошо работает в windows7 , но получил вышеупомянутую ошибку в linux .
Есть ли что-нибудь, что мне нужно еще сделать в Linux? Любое предложение будет оценено.
Спасибо.

Ответ №1:

Это проблема не из-за вашего кода, а из-за разрешения пользователя postgres.

Вы должны создать нового пользователя для доступа к вашей базе данных и заменить это :

 conn = psycopg2.connect("dbname = myDatabase user = postgres port = 5432")
  

by (замените <your_user> своим настоящим именем пользователя …)

 conn = psycopg2.connect("dbname = myDatabase user = <your_user> port = 5432")
  

Чтобы создать нового пользователя в postgres, вы можете использовать двоичный файл ‘createuser’. Документация доступна здесь.

Комментарии:

1. Спасибо за информацию, но когда я это сделал, то есть когда я попытался создать пользователя, я все равно получаю ошибку «Ошибка аутентификации Ident», код таков: # createuser -S -D -R -E testUser createuser: не удалось подключиться к базе данных postgres: ФАТАЛЬНЫЙ сбой аутентификации Ident для пользователя «root»

2. Когда вы соединитесь с пользователем root, просто запишите: «su — postgres». Затем вы можете легко запустить createuser…