OSError: [Errno 13] Permission denied: '/var/lib/pgadmin'
OSError: [Errno 13] Permission denied: '/var/lib/pgadmin'
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'
你能帮我踢一下吗?
权限错误表示用户'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.
如果您不想更改任何内容的权限,您可以随时覆盖 pgAdmin4 中的默认路径。
在您的安装位置 ../pgadmin4/web/
创建一个名为 config_local.py 的文件(如果不存在)
File location in my case:
/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 并检查。
手动创建文件夹(或添加到您的 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
分配权限。
我在 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
我在 pgAdmin4 v3.1 上遇到了同样的问题,我只是写了 sudo python pgAdmin4.py
就成功了!
通过几个步骤解决了问题
1. 在主机 vm
上创建空文件夹
mkdir /private/var/lib/pgadmin
chmod 777 /private/var/lib/pgadmin
- 启动 pgadmin docker 图片
docker pull dpage/pgadmin4
docker run -p 80:80\
-v /private/var/lib/pgadmin:/var/lib/pgadmin \
...
- 你会看到这样新创建的文件结构
/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]
因此应用程序将运行,用户设置将被保存。
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'
你能帮我踢一下吗?
权限错误表示用户'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.
如果您不想更改任何内容的权限,您可以随时覆盖 pgAdmin4 中的默认路径。
在您的安装位置 ../pgadmin4/web/
File location in my case: /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 并检查。
手动创建文件夹(或添加到您的 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
分配权限。
我在 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
我在 pgAdmin4 v3.1 上遇到了同样的问题,我只是写了 sudo python pgAdmin4.py
就成功了!
通过几个步骤解决了问题 1. 在主机 vm
上创建空文件夹mkdir /private/var/lib/pgadmin chmod 777 /private/var/lib/pgadmin
- 启动 pgadmin docker 图片
docker pull dpage/pgadmin4 docker run -p 80:80\ -v /private/var/lib/pgadmin:/var/lib/pgadmin \
...
- 你会看到这样新创建的文件结构
/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]
因此应用程序将运行,用户设置将被保存。