PostgreSQL備忘——Ubuntu 20.04下的簡單安裝與相關事宜

這段時間要使用PostgreSQL數據庫,這裏記錄一下安裝方面的一些內容。


操作系統:Ubuntu 20.04


1. 默認安裝

在Ubuntu 20.04下,PostgreSQL的默認版本已經達到12.2。於我而言,這個版本已經足夠新,所以不再使用官方介紹的方法來安裝更新的版本,直接使用以下命令安裝。

sudo apt install postgresql
2. 設置調用命令路徑

PostgreSQL安裝後會提供一些很有用的命令,但是並不能直接調用,需要我們編輯配置文件,把這些命令所在路徑添加進去。可以先用find或者下面這個命令來查詢這些postgresql命令所在目錄:

locate initdb

如果還沒有安裝locate命令(通過名稱發現文件)的話,可以用sudo apt install mlocate來安裝。

以上命令會列出下面的內容:

/etc/alternatives/initdb.1.gz
/usr/lib/postgresql/12/bin/initdb
/usr/share/man/man1/initdb.1.gz
/usr/share/postgresql/12/man/man1/initdb.1.gz

當然,這個結果大家不一定相同。從結果中我們很容易就發現第2行正是我們需要的。編輯/etc/profile文件(因爲其他賬號也會使用這些命令,所以修改這個文件,而不是當前賬號下的配置文件。),加入以下內容:

# PostgreSQL
export PATH=$PATH:/usr/lib/postgresql/12/bin

保存後註銷、重新登錄。這時每個賬號都可以調用許多有用的PostgreSQL命令了。此外,這裏也介紹一個查詢當前PostgreSQL相關目錄的命令:

ps auxw | grep postgres | grep -- -D

在我的電腦上顯示的結果爲:

postgres   11041  0.0  0.2 227072 29408 ?        Ss   20:01   0:00 /usr/lib/postgresql/12/bin/postgres -D /var/lib/postgresql/12/main -c config_file=/etc/postgresql/12/main/postgresql.conf
3. 用戶設置

爲了操作方便,我把當前操作系統用戶(例如starry)加入到postgres用戶組中。

sudo adduser starry postgres
4. 創建數據庫集簇

PostgreSQL安裝後,會生成一個默認的數據庫存儲區域。如果不想用默認的,那就自己創建一個新的區域(集簇)吧。比如,有的時候我們希望數據庫是保存在移動介質上,需要使用時才掛到當地的PostgreSQL上。雖然可以使用備份還原來處理,但是相對麻煩。原來在使用MSSQL時,可以很方便的把數據庫文件脫離或掛載到數據庫上,但因爲我剛接觸PostgreSQL,還沒有發現類似的功能。

使用下面的命令創建,注意後面的路徑,根據自己的習慣進行設置。創建集簇的方法有好幾種,這裏暫時只介紹這一種。

sudo chown -R postgres:postgres /home/starry/tree/public/clover/data/pgsql/
sudo service postgresql stop
sudo su - postgres
initdb -D /home/starry/tree/public/clover/data/pgsql/data
postgres -D /home/starry/tree/public/clover/data/pgsql/data
  • 第1行命令把需要創建新集簇的目錄權限賦給postgres;
  • 第2行命令把正在運行的postgresql服務停止;
  • 第3行命令切換到postgres用戶下;
  • 第4行命令用於創建新集簇;
  • 第5行命令用於啓用新集簇。

最後一行命令運行後會有以下提示:

2020-06-12 23:23:22.528 CST [23021] LOG:  starting PostgreSQL 12.2 (Ubuntu 12.2-4) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.3.0-8ubuntu1) 9.3.0, 64-bit
2020-06-12 23:23:22.528 CST [23021] LOG:  listening on IPv4 address "127.0.0.1", port 5432
2020-06-12 23:23:22.561 CST [23021] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2020-06-12 23:23:22.688 CST [23022] LOG:  database system was shut down at 2020-06-12 23:17:01 CST
2020-06-12 23:23:22.736 CST [23021] LOG:  database system is ready to accept connections

這樣就表示已經成功啓動,這個終端窗口就這樣開着吧,如果用ctrl-c中斷的話,服務也就停止了。我們另開一個窗口,用以下命令查詢一下當前postgresql的狀態:

ps auxw | grep postgres | grep -- -D

運行結果如下:

postgres   23021  0.0  0.2 226780 27644 pts/0    S+   23:23   0:00 postgres -D /home/starry/tree/public/clover/data/pgsql/data

從結果上可以看見,當前指向的數據庫集簇正是我們新建的集簇。

5. 增加用戶

PostgreSQL安裝後,會有一個默認的賬號:postgres。但我習慣創建一個與當前使用的操作系統賬號相同的數據庫賬號,例如我在Ubuntu 20.04下使用的starry賬號。按照以下步驟創建,並且在創建時賦予相應權限。

sudo su - postgres
psql

CREATE ROLE starry WITH LOGIN CREATEDB ENCRYPTED PASSWORD '2020-Jun';
\q
exit

現在就可以使用新賬號在新的數據庫集簇下工作了。在還沒有新建任何數據庫時,可以先用以下命令進入:

psql -d postgres

注意,這條命令是在starry用戶下執行的。進入的是默認的postgres數據庫。

因爲我並不經常使用postgresql數據庫,所以沒有設置默認啓動新集簇,只有在需要時纔會使用postgres命令啓用,命令如下:

sudo service postgresql stop
sudo su - postgres
postgres -D /home/starry/tree/public/clover/data/pgsql/data

爲了方便使用PostgreSQL,可以安裝工具pgAdmin,安裝方法官方網站有詳細介紹,地址是:pgAdmin4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章