操作系统错误:[Errno 13]权限被拒绝:'/var/lib/pgadmin'

问题描述 投票:0回答:7

Ubuntu 16.04.3

我想安装 pgAdmin:

我用 python 2 创建了一个 virtualenv。

然后安装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'

你能踢我一下吗?

pgadmin-4
7个回答
33
投票

如果您不想更改任何内容的权限,您可以随时覆盖 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 并检查。


6
投票

权限错误意味着用户“michael”(/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.

5
投票

手动创建文件夹(或添加到 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
分配权限。


1
投票

通过几个步骤解决了问题 1. 在主机虚拟机上创建空文件夹

mkdir /private/var/lib/pgadmin
chmod 777 /private/var/lib/pgadmin
  1. 启动 pgadmin docker 镜像
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]

应用程序将运行,用户设置将被保存。


0
投票

我在 Ubuntu 16.04 上安装了 pgadmin4 v2.1 并遇到了这个问题。请参阅最后一行代码。 (我在脚本文件中运行这个,懒惰。)我还以这种方式安装了 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

0
投票

根据 pgadmin 站点中的文档

如果您正在安装 var/lib/pgadmin 您的主机,您应该执行以下命令

sudo chown -R 5050:5050 <your_pgadmin_host_directory>

-4
投票

我在 pgAdmin4 v3.1 上也遇到了同样的问题,我只是写了

sudo python pgAdmin4.py
就成功了!.

© www.soinside.com 2019 - 2024. All rights reserved.