簡體   English   中英

創建沒有root權限的PostgreSQL數據庫

[英]Create PostgreSQL Database without root privilege

目前,我用

$ 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以將port更改為非默認port ,因為您的系統可能在默認端口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或使用二進制安裝程序安裝在您的主目錄中。

Postgres可以在沒有root權限的情況下運行。 只需從https://www.enterprisedb.com/download-postgresql-binaries下載

並運行

Init數據庫

./initdb -D /data

運行postgres

./bin/postgres -D /data

創建數據庫

./bin/createdb mydb

用psql連接

./bin/psql mydb

https://www.golery.com/pencil/vU

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM