linux未知用户 postgres,linux – 创建没有root权限的PostgreSQL数据库

目前,我用

$sudo service postgresql start

启动PostgreSQL服务器和

$sudo -u postgres createdb testdb --owner ownername

创建数据库.但是,这些命令需要root权限.如何在Linux(Ubuntu)上没有root权限/ sudo的情况下执行这些操作?

解决方法:

你可以通过创建一个新实例(PostgreSQL称之为“集群”)并启动它来运行没有root权限的PostgreSQL.

如果这样做,您不能使用Ubuntu init脚本,pg_ctlcluster等包装工具.您必须只使用PostgreSQL自己的工具.

要使用超级用户等于您的用户名,主目录中的数据目录以及默认情况下启用md5 auth来创建新的PostgreSQL实例,请使用:

initdb -D $HOME/my_postgres -A md5 -U $USER

根据需要调整;请参阅initdb –help.

然后,您需要编辑postgresql.conf以将端口更改为非默认端口,因为您的系统可能在默认端口5432上运行自己的postgres.(如果您想严格限制访问权限,则可以改为设置listen_addresses =”和unix_socket_directories = / home / myuser / postgres_socket或者其他什么.但是使用不同的端口更简单.)

开始吧:

pg_ctl -D $HOME/my_postgres -w start

要连接到它,请指定您选择的端口:

psql -p 5434 ...

(如果你更改了unix_socket_directories,你还需要指定你给出的路径,比如-h / home / myuser / postgres_socket.)

要使psql等默认连接到你的postgres,编辑你的〜/ .bashrc来添加类似的东西

export PGPORT=5434

但请注意,这也会影响与其他主机连接的默认端口.

要阻止它:

pg_ctl -D $HOME/my_postgres -w stop

但是你也可以在不停止的情况下关闭它,它并不关心,并且当你下次启动时它会安全恢复.

要在登录时在主目录中设置时自动启动它,您必须使用桌面环境的run-at-startup功能.它们因环境和版本而异,所以我不能在此提供详细信息;它与GNOME 3,Unity(ubuntu),KDE,XFCE等不同.

请注意,此方法仍然使用PostgreSQL的系统包.这很重要,因为如果您卸载(比如说)PostgreSQL 9.4并安装9.6,您家中的副本将停止工作.如果您希望它完全独立于系统软件包,就像您不控制系统那样,您应该从源代码编译PostgreSQL或使用二进制安装程序安装在您的主目录中.

标签:linux,postgresql,database

来源: https://codeday.me/bug/20190724/1524058.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值