在设置权限前,需完成pgAdmin的安装与基础配置。使用以下命令添加pgAdmin官方存储库并安装:
sudo apt update
sudo apt install curl gpg gnupg2 software-properties-common apt-transport-https lsb-release ca-certificates
curl -fsSL https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo gpg --dearmor -o /usr/share/keyrings/packages-pgadmin-org.gpg
echo "deb [signed-by=/usr/share/keyrings/packages-pgadmin-org.gpg] https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" | sudo tee /etc/apt/sources.list.d/pgadmin4.list
sudo apt update
sudo apt install pgadmin4
安装完成后,运行配置脚本设置主密码(用于登录pgAdmin):
sudo /usr/pgadmin4/bin/setup-web.sh
随后通过浏览器访问http://your-server-ip/pgadmin4,使用主密码登录web界面。
pgAdmin的运行与访问需依托Linux系统的用户和组权限体系,以下是常用操作:
pgadmin_user):sudo adduser pgadmin_user
old_user):sudo deluser old_user
sudo passwd pgadmin_user
pgadmin组(或其他自定义组),便于统一管理权限:sudo usermod -aG pgadmin pgadmin_user
/usr/pgadmin4)及配置文件(如/etc/pgadmin4/pgadmin4.conf)的安全:sudo chown -R root:pgadmin /usr/pgadmin4
sudo chmod -R 750 /usr/pgadmin4
sudo chmod 600 /etc/pgadmin4/pgadmin4.conf
sudo chown root:root /etc/pgadmin4/pgadmin4.conf
以上命令将安装目录所有者设为root,所属组设为pgadmin,允许所有者读写执行,组用户读执行,其他用户无权限;配置文件仅能被root读写。pgAdmin是PostgreSQL的客户端工具,最终权限由PostgreSQL数据库决定,需通过SQL命令设置:
sudo su - postgres
psql
your_username替换为目标用户名,your_password替换为强密码(可根据需求添加SUPERUSER、CREATEDB等关键字):CREATE USER your_username WITH PASSWORD 'your_password';
CREATE DATABASE target_db OWNER your_username;
CONNECT)或授予所有权限(ALL PRIVILEGES,谨慎使用):GRANT CONNECT ON DATABASE target_db TO your_username;
GRANT ALL PRIVILEGES ON DATABASE target_db TO your_username;
SELECT、INSERT、UPDATE),可使用以下命令:GRANT SELECT, INSERT, UPDATE ON TABLE target_table TO your_username;
\q
以上命令需在PostgreSQL命令行中执行,确保权限设置生效。pgAdmin通过对象浏览器和**ACL(访问控制列表)**实现细粒度的数据库权限管理:
target_db)。your_username)。SELECT、INSERT、UPDATE、DELETE等),点击“保存”即可。DROP权限)。ufw限制pgAdmin访问IP,仅允许可信网络访问:sudo ufw allow from trusted_ip to any port 5050/tcp
sudo ufw enable
/etc/pgadmin4/pgadmin4.conf中的ENABLE_HTTPS = True,并指定证书路径),保护数据传输安全。sudo apt update && sudo apt upgrade及时更新pgAdmin及PostgreSQL,修复安全漏洞。REVOKE ALL PRIVILEGES ON DATABASE target_db FROM your_username; -- 撤销数据库级权限
REVOKE SELECT ON ALL TABLES IN SCHEMA public FROM your_username; -- 撤销表级权限
\du +),或查询表级权限明细(执行SELECT table_catalog, table_schema, table_name, privilege_type FROM information_schema.table_privileges WHERE grantee = 'your_username';)。