目前,我用
$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或使用二进制安装程序安装在您的主目录中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。