Я знаю, что в StackOverflow есть много похожих вопросов, но я прочитал и перечитал их, и я не могу решить свою проблему.Python и Postgresql: OperationalError: fe_sendauth: пароль не указан
Я разрабатываю приложение Python, которое использует Peewee и Psycopg2 для доступа к базам данных PostGresQL. Все это выполняется на виртуальной машине Vbrant Ubuntu.
Я постоянно получаю эту ошибку, когда я пытаюсь добавить пользователя с помощью Python:
peewee.OperationalError: fe_sendauth: нет пароля прилагается
Вот код, где я пытаюсь добавить пользователя:
def add_user(user, password):
"""
:param username:
:param password:
:return:
"""
try:
#add user to admin user table
#AdminUserModel.create(username=user, password=password)
# add user to psql
conn = connect_to_db('postgres', 'postgres')
cursor = conn.cursor()
add_query = "CREATE ROLE %s WITH CREATEDB LOGIN PASSWORD %s"
add_data = (AsIs(user), password)
cursor.execute(add_query, add_data)
except IntegrityError:
return False
return True
def connect_to_db(db_name, username):
conn = psycopg2.connect(dbname=db_name, user=username)
conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT)
return conn
Я изменил мой файл pg_hba.conf к:
# Database administrative login by Unix domain socket
local all postgres trust
# "local" is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all vagrant 127.0.0.1/32 trust
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all vagrant ::1/128 trust
host all all ::1/128 md5
И перезапустили мой сервер postgresql.
Вот мой Vagrantfile:
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.provider :virtualbox do |vb|
# use for debugging the vm
# vb.gui = true
# speed up networking
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
end
config.vm.provision "shell", inline: <<-SHELL
sudo apt-get update
sudo apt-get install -y python-software-properties
sudo apt-get update -y
# sudo apt-get upgrade -y
sudo apt-get install -y postgresql postgresql-contrib postgresql-client libpq-dev
sudo sed -i "s/#listen_address.*/listen_addresses '*'/" /etc/postgresql/9.3/main/postgresql.conf
sudo cp /home/vagrant/cs419-project/vagrant_files/pg_hba.conf /etc/postgresql/9.3/main/pg_hba.conf
sudo service postgresql restart
# createuser -U postgres -s vagrant
sudo -u postgres psql -c "CREATE ROLE vagrant SUPERUSER LOGIN PASSWORD 'vagrant'"
sudo su postgres -c "createdb -E UTF8 -T template0 --locale=en_US.utf8 -O vagrant cs419"
sudo apt-get install -y python-pip python-psycopg2
sudo pip install peewee
SHELL
config.vm.synced_folder ".", "/home/vagrant/cs419-project", id: "vagrant",
owner: "vagrant",
group: "admin",
mount_options: ["dmode=775,fmode=664"]
end
Пожалуйста, любая помощь вы можете дать очень высокую оценку!
ПРИМЕЧАНИЕ: Самая странная часть - это все, казалось, работало раньше, а затем я не знаю, что я изменил, но она перестала работать.
Сервер запрашивает пароль у клиента, но вы не предоставили пароль. –
Но я подписываюсь как «postgres», которому не нужен пароль. По крайней мере, мне это не нужно, когда я подключаюсь через командную строку ... –
Ваш pg_hba.conf указывает, что для tcp-соединений требуется пароль, кроме как пользовательский «бродяга». «Неверный пароль» для «postgres» настроен только для доступа к сокету Unix –