這段時間要使用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。