目前,我用
$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