OSError: [Errno 13] Отказано в доступе: '/var/lib/pgadmin'

Убунту 16.04.3

Я хотел бы установить pgAdmin:

Я создал виртуальную среду с Python 2.

Затем установите pgAdmin 4 v2.0:

pip install https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v2.0/pip/pgadmin4-2.0-py2.py3-none-any.whl

Пришло время запустить pgAdmin:

(pgadmin4) michael@michael-desktop:~/PycharmProjects/venv$ python pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py
Traceback (most recent call last):
  File "pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py", line 55, in <module>
    exec(open(file_quote(setupfile), 'r').read())
  File "<string>", line 46, in <module>
  File "/home/michael/PycharmProjects/venv/pgadmin4/lib/python2.7/site-packages/pgadmin4/pgadmin/setup/data_directory.py", line 23, in create_app_data_directory
    _create_directory_if_not_exists(os.path.dirname(config.SQLITE_PATH))
  File "/home/michael/PycharmProjects/venv/pgadmin4/lib/python2.7/site-packages/pgadmin4/pgadmin/setup/data_directory.py", line 15, in _create_directory_if_not_exists
    os.mkdir(_path)
OSError: [Errno 13] Permission denied: '/var/lib/pgadmin'

Не могли бы вы дать мне пинок здесь?


person Michael    schedule 12.10.2017    source источник
comment
Это можно легко решить, переопределив пути по умолчанию. Вы можете сослаться на мой ответ ниже.   -  person Murtuza Z    schedule 16.10.2017
comment
Совершенно другой подход — запустить pgAdmin из Docker. Нашел это в другом посте. mkdir ~/.pgadmin4 # для хранения конфигурации и прочего docker run -d --rm --network host -v ~/.pgadmin4:/pgadmin thjeztah/pgadmin4 Затем перейдите на localhost:5050 и готово. См. github.com/thaJeztah/pgadmin4-docker для получения дополнительной информации.   -  person John Dauphine    schedule 08.02.2020


Ответы (6)


Ошибка разрешения означает, что пользователь «майкл» (/var/lib имеет drwxr-xr-x) имеет разрешение на выполнение, но не имеет разрешения на запись в папку (согласно вашему комментарию к информации о папке ниже). Одно из решений, которое вы можете использовать для свободного доступа к папке, будет выглядеть примерно так:

chown -R michael:root /path/to/the/directory

Вторая часть ответа, ты понял @Michael. загрузка pgadmin с помощью команды:

wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v1.5/pip/pgadmin4-1.5-py2.py3-none-any.whl 

а затем выполнить команду:

pip install pgadmin4*.whl.
person abr    schedule 12.10.2017
comment
/var/lib имеет корень drwxr-xr-x. Почему я должен изменить его? Если не сделано для меня, чтобы измениться, не так ли? - person Michael; 12.10.2017
comment
под каким пользователем вы выполняете команду? также напишите «группы ‹user›» и посмотрите, есть ли у вас права доступа к папке, над которой вы действуете. - person abr; 12.10.2017
comment
Это обычный пользователь. Нет разрешений. Пользователь принадлежит к группе sudo. Но я, кажется, следую руководству по установке pgAdmin. Там нет ничего о разрешениях. Просто запустите команду Python. Я один сталкиваюсь с этой проблемой? - person Michael; 12.10.2017
comment
Вы пробовали писать sudo перед предложением? Папка имеет права для пользователя root, группы root. Является ли «майкл» корневой группой? Вы можете просто указать -R michael:root /path/to/the/directory и снова запустить команду. - person abr; 12.10.2017
comment
sudo python pgadmin4/lib/python2.7/site-packages/pgadmin4/pgAdmin4.py? Но есть ли в этом смысл? Я старался. ImportError: сразу не появилось ни одного модуля с именем flask. - person Michael; 12.10.2017
comment
Но у меня установлен модуль фляги. Я старался. Я запускаю python и записываю import flask. Но что это такое? Я нарушаю инструкцию по установке pgAdmin? Пробовал на другом компе. Тот же результат. Почему гугление этой проблемы не дает результата? И, кстати, sudo pip не работает. - person Michael; 12.10.2017
comment
Фляга модуля установлена ​​в том же каталоге? Есть ли у него разрешения? - person abr; 12.10.2017
comment
Ну, это что-то начинает проясняться. Я скачал руль. И установлен не из удаленного репозитория. wget ftp .postgresql.org/pub/pgadmin/pgadmin4/v1.5/pip/ Затем pip установите pgadmin4*.whl. Теперь он работает. - person Michael; 12.10.2017
comment
Уважаемый абр, вы мне помогли. И если вы систематизируете в своем ответе то, что я написал выше, я с радостью приму это. - person Michael; 12.10.2017
comment
Рад, что это помогло, хотя часть фляги вы поняли сами! Обновлено - person abr; 12.10.2017
comment
Что ж, это помогло. Но проблема все еще здесь. Вы заметили, что версия pgAdmin устарела? Текущий pgAdmin (2.0) не будет установлен таким образом. - person Michael; 12.10.2017
comment
Да, старая версия, 1.6, устанавливается и работает нормально. Проблема v2+. Я получаю ту же ошибку при попытке обновления, и я следовал всем советам здесь. Папки /var/lib/pgadmin нет и, конечно же, он не может ее найти. Это не настоящая проблема с разрешениями. Я также попробовал новую установку и не повезло. Та же проблема. Полностью обновленная коробка Ubuntu 16.04. - person Preston; 12.02.2018
comment
Это предложение chown позволило pgadmin работать, а затем сломало мою виртуальную машину. - person Bret Hess; 18.03.2020

Если вы не хотите менять разрешение на что-либо, вы всегда можете переопределить пути по умолчанию в pgAdmin4.

Создайте файл с именем config_local.py (если он еще не существует) в месте установки ../pgadmin4/web/.

Расположение файла в моем случае: /usr/local/lib/python2.7/dist-packages/pgadmin4/config_local.py

и добавьте следующий код в свой config_local.py,

import os
DATA_DIR = os.path.realpath(os.path.expanduser(u'~/.pgadmin/'))
LOG_FILE = os.path.join(DATA_DIR, 'pgadmin4.log')
SQLITE_PATH = os.path.join(DATA_DIR, 'pgadmin4.db')
SESSION_DB_PATH = os.path.join(DATA_DIR, 'sessions') 
STORAGE_DIR = os.path.join(DATA_DIR, 'storage')

Перезапустите pgAdmin4 и проверьте.

person Murtuza Z    schedule 13.10.2017
comment
Работает на меня. Спасибо! - person JustWonder; 13.10.2017
comment
Сегодня установил мой, и нигде в моей системе НЕТ config_local.py - person KhoPhi; 04.11.2017
comment
вы должны создать его, это файл конфигурации, определяемый пользователем. - person Murtuza Z; 04.11.2017
comment
Ссылка на документы pgadmin. Вы, вероятно, будете время от времени получать эту ошибку после обновления, так как список путей может обновляться от одного выпуска к другому (что и произошло со мной сегодня). Чтобы увидеть, какие пути нужно обновить, вы можете посмотреть файл pgadmin4/pgadmin/setup/data_directory.py. - person n__o; 15.01.2018
comment
Пробовал это для обновления с pgadmin4-1.6, который работал на моей Ubuntu 16.04, до pgadmin4-2.0, и это не сработало. OSError: [Errno 13] Отказано в доступе: '/var/lib/pgadmin' Эта папка нигде не существует. - person Preston; 12.02.2018
comment
@Preston pgAdmin4 пытается создать здесь новую папку, и вскоре после этого произойдет сбой из-за проблемы с разрешениями, лучше предоставить надлежащее разрешение ИЛИ изменить пути к домашнему каталогу, где у пользователя есть все необходимые разрешения. - person Murtuza Z; 12.02.2018
comment
@ n33ma Спасибо, что указали на это. Я разместил свое решение. Просто добавьте sudo в загрузочный скрипт. Мне не нужен был config_local.py. - person Preston; 13.02.2018

создайте папки вручную (или добавьте в свой скрипт установки pgAdmin, если он есть) и назначьте разрешения:

sudo mkdir "/var/log/pgadmin"
sudo chmod a+wrx "/var/log/pgadmin"

sudo mkdir "/var/lib/pgadmin"
sudo chmod a+wrx "/var/lib/pgadmin"

это не назначит разрешения для всего /var/log, а только для /var/log/pgadmin.

person mehmet    schedule 14.11.2017

Я установил pgadmin4 v2.1 на Ubuntu 16.04 и столкнулся с этой проблемой. Смотрите последнюю строку кода. (Я запускаю это в файле сценария, ленивый.) Я также установил 2.0 таким образом в качестве теста, чтобы увидеть, действительно ли это исправление. Мне не нужно было использовать config_local.py.

cd ..
cd home/vagrant

sudo apt-get install build-essential libssl-dev libffi-dev libgmp3-dev virtualenv python-pip libpq-dev python-dev

virtualenv .pgadmin4
cd .pgadmin4
source bin/activate

wget https://ftp.postgresql.org/pub/pgadmin/pgadmin4/v2.1/pip/pgadmin4-2.1-py2.py3-none-any.whl

pip install pgadmin4-2.1-py2.py3-none-any.whl

# For this either use your remote host panel to edit the file or:
nano lib/python2.7/site-packages/pgadmin4/config.py
# Change:
# DEFAULT_SERVER = '0.0.0.0'

# Here is the trick.  Run this boot up file with sudo.  This fixed it for me.
sudo python lib/python2.7/site-packages/pgadmin4/pgAdmin4.py
person Preston    schedule 12.02.2018

проблема решена в несколько шагов 1. создайте пустые папки на хосте vm

mkdir /private/var/lib/pgadmin
chmod 777 /private/var/lib/pgadmin
  1. запустить образ докера pgadmin
docker pull dpage/pgadmin4
docker run -p 80:80\
    -v /private/var/lib/pgadmin:/var/lib/pgadmin \
     ...
  1. вы увидите вновь созданную файловую структуру, подобную этой
/private/var/lib/pgadmin

-rw-------.  1 5050 5050 757760 Jan 13 23:11 pgadmin4.db
drwx------.  2 5050 5050     50 Jan 13 23:00 sessions
drwxr-xr-x.  3 5050 5050     31 Jan 13 23:17 storage

таким образом, UID 5050 является нашей целью. 4. Скопируйте файл pgadmin4.db в целевой каталог и примените правильный UID [5050 в моем случае]

В результате приложение заработает, пользовательские настройки будут сохранены.

person Alex F    schedule 13.01.2020
comment
никогда не чмод 777 - person abr; 19.03.2020

У меня была такая же проблема с pgAdmin4 v3.1, я просто пишу sudo python pgAdmin4.py и все работает!.

person Mile    schedule 03.07.2018
comment
[Errno 2] Нет такого файла или каталога - person Steve K; 04.03.2021