JHu*_*JHu 5 database linux postgresql
目前,我用
$ sudo service postgresql start
Run Code Online (Sandbox Code Playgroud)
启动PostgreSQL服务器和
$ sudo -u postgres createdb testdb --owner ownername
Run Code Online (Sandbox Code Playgroud)
创建数据库.但是,这些命令需要root权限.如何在Linux(Ubuntu)上没有root权限/ sudo的情况下执行这些操作?
你可以通过创建一个新实例(PostgreSQL称之为"集群")并启动它来运行没有root权限的PostgreSQL.
pg_ctlcluster
如果这样做,您不能使用Ubuntu init脚本,诸如此类的包装工具.您必须只使用PostgreSQL自己的工具.
要创建新的PostgreSQL实例,超级用户等于您的用户名,主目录中的数据目录,默认情况下启用md5 auth,请使用:
initdb -D $HOME/my_postgres -A md5 -U $USER
Run Code Online (Sandbox Code Playgroud)
根据需要调整; 看initdb --help
.
然后,您需要编辑postgresql.conf
改port
到非默认的,因为你的系统可能运行在默认端口5432上了自己的Postgres(如果您想访问严格限制的话,你可以改为设置listen_addresses = ''
和unix_socket_directories = /home/myuser/postgres_socket
或什么的.但是使用不同的端口更简单.)
开始吧:
pg_ctl -D $HOME/my_postgres -w start
Run Code Online (Sandbox Code Playgroud)
要连接到它,请指定您选择的端口:
psql -p 5434 ...
Run Code Online (Sandbox Code Playgroud)
(如果你改变了,unix_socket_directories
你也想指定你给出的路径,比如-h /home/myuser/postgres_socket
.)
要psql
默认情况下使用etc连接到你的postgres,编辑你的~/.bashrc
东西就像添加
export PGPORT=5434
Run Code Online (Sandbox Code Playgroud)
但请注意,这也会影响与其他主机连接的默认端口.
要阻止它:
pg_ctl -D $HOME/my_postgres -w stop
Run Code Online (Sandbox Code Playgroud)
但是你也可以在不停止的情况下关闭它,它并不关心,并且当你下次启动时它会安全恢复.
要在登录时在主目录中设置时自动启动它,您必须使用桌面环境的run-at-startup功能.它们因环境和版本而异,所以我不能在此提供详细信息; 它与GNOME 3,Unity(ubuntu),KDE,XFCE等不同.
请注意,此方法仍然使用PostgreSQL 的系统包.这很重要,因为如果您卸载(比如说)PostgreSQL 9.4并安装9.6,您家中的副本将停止工作.如果您希望它完全独立于系统软件包,就像您不控制系统那样,您应该从源代码编译PostgreSQL或使用二进制安装程序在您的主目录中安装.
归档时间: |
|
查看次数: |
3637 次 |
最近记录: |