语境:
我正在使用 自动安装postgresql-9.1
在 Ubuntu 服务器上apt-get
。这将创建所需的postgres
用户。
Postgres 数据位于外部卷上,即使重新安装后仍可保留。这些数据显然归用户所有postgres
。
我遇到的问题是所有权不是记录在名称下postgres
,而是记录在创建时的 UID 下postgres
。重新安装服务器时,postgres
有时会获得不同的 UID,并且不再拥有数据目录,因此不起作用。
问题:
postgres
我可以强制将所创建用户的 UIDapt-get
固定为某个值吗?或者还有其他方法可以解决我的问题?
(您可能已经推断出,这是在 Amazon EC2 上,数据位于 EBS 卷上)
答案1
两个想法:
postgres
在安装 PostgreSQL 之前使用正确的 UID创建您的用户。- 创建您自己的自定义 postgresql-9.1 包,该包安装库存 postgresql-9.1 包,然后执行
chown
。
答案2
usermod -u {desired_UID} {username}
从这里偷来的:Lethe 的博客
但我实际上认为 chown 会比这更好,因为它不会因为desired_UID
已经被使用或以其他方式产生冲突而失败。
答案3
我可以将chown
数据目录添加到服务器设置脚本中,但我更喜欢更优雅的解决方案。还因为其他服务(如 Tomcat)也存在同样的问题。