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