$ sudo service postgresql start
啓動PostgreSQL服務器和
$ sudo -u postgres createdb testdb --owner ownername
創建數據庫。但是,這些命令需要root權限。如何在Linux(Ubuntu)上沒有root權限/ sudo的情況下執行這些操作?
$ 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自己的工具。
要創建具有超級用戶等於您的用戶名新的PostgreSQL實例,默認情況下,使用使你的主目錄數據目錄和MD5身份驗證:
initdb -D $HOME/my_postgres -A md5 -U $USER
根據需要調整;見initdb --help
。
然後,您需要編輯postgresql.conf
將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
,但你也可以只關閉不停止,它並不關心,當你下次啓動它會安全地恢復。
要在您的主目錄中設置它時登錄時自動啓動它,您必須使用桌面環境的啓動時運行功能。它們因環境和版本而異,所以我不能在這裏提供細節;它不同於GNOME 3,Unity(ubuntu),KDE,XFCE等。
請注意,此方法仍然使用系統包用於PostgreSQL。這很重要,因爲如果你卸載(比如說)PostgreSQL 9.4並安裝9.6,你的主目錄中的副本將停止工作。如果你希望它完全獨立於系統包,就像你不控制系統時那樣,你應該從源代碼編譯PostgreSQL,或者使用二進制安裝程序安裝在你的主目錄中。
如果你想運行一個系統服務的東西,你需要root權限。但是你可以在你自己的用戶帳戶下本地運行Postgresql。 'createdb'不需要root用戶(只需將Postgres作爲Postgres管理員用戶訪問,可以由任何操作系統用戶甚至遠程用戶完成) – Thilo
@Thilo您能否解釋如何在本地運行Postgresql? – JHu