- 工作中需要用到
postgresql
,記錄一下在Linux
環境如何安裝和使用
1.安裝yum源
地址從http://yum.postgresql.org/repopackages.php
獲取
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
2.安裝PostgreSQL
yum install postgresql96-server postgresql96-contrib
3.初始化資料庫
/usr/pgsql-9.6/bin/postgresql96-setup initdb
4.預設情況下PostgreSQL不支援密碼登入,如需支援需要修改配置檔案
- 將未註釋行中的ident 替換為 md5
vim /var/lib/pgsql/9.6/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident
- 如需開啟遠端訪問,可編輯
/var/lib/pgsql/9.6/data/postgresql.conf
檔案。 - 將
#listen_addresses = `localhost`
修改為listen_addresses=`*`
(當然,此處‘*`也可以改為任何你想開放的伺服器IP) - 另外對於特定的IP還可以設定開啟信任遠端連線,修改
/var/lib/pgsql/9.6/data/pg_hba.conf
,按下面的格式進行新增設定。
# IPv4 local connections:
host all all 127.0.0.1/32 trust
host all all 8.8.8.8/32(需要連線的伺服器IP) trust
- 修改完配置以後不要忘了重啟服務。
5.管理服務,和其他服務一樣還是用systemd進行管理
systemctl start postgresql-9.6 #啟動服務
systemctl restart postgresql-9.6 #重啟服務
systemctl stop postgresql-9.6 #停止服務
systemctl enable postgresql-9.6 #自動啟動
6.登入PostgreSQL
- PostgreSQL 安裝完成後,會建立一下‘postgres`使用者,用於執行PostgreSQL,資料庫中也會建立一個`postgres`使用者,如果我們要使用PostgreSQL就必須先登入此帳號。
sudo -i -u postgres
- 執行後提示符會變為 ‘-bash-4.2$`,再執行
- 同構執行進入 psql 進入postgresql命令列環境。
[root@localhost ~]# sudo -i -u postgres
-bash-4.2$ psql
psql (9.6.1)
Type "help" for help.
postgres=#
- 接著可以執行
ALTER USER postgres WITH PASSWORD `123456`
來設定postgres使用者密碼,可通過q退出資料庫
常用命令介紹:
-
控制檯命令
- 除了前面已經用到的password命令(設定密碼)和q命令(退出)以外,控制檯還提供一系列其他命令。
h:檢視SQL命令的解釋,比如h select。 ?:檢視psql命令列表。 l:列出所有資料庫。 c [database_name]:連線其他資料庫。 d:列出當前資料庫的所有表格。 d [table_name]:列出某一張表格的結構。 du:列出所有使用者。 e:開啟文字編輯器。 conninfo:列出當前資料庫和連線的資訊。
-
資料庫操作
- 基本的資料庫操作,就是使用一般的SQL語言。
# 建立新表 CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE); # 插入資料 INSERT INTO user_tbl(name, signup_date) VALUES(`張三`, `2013-12-22`); # 選擇記錄 SELECT * FROM user_tbl; # 更新資料 UPDATE user_tbl set name = `李四` WHERE name = `張三`; # 刪除記錄 DELETE FROM user_tbl WHERE name = `李四` ; # 新增欄位 ALTER TABLE user_tbl ADD email VARCHAR(40); # 更新結構 ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL; # 更名欄位 ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup; # 刪除欄位 ALTER TABLE user_tbl DROP COLUMN email; # 表格更名 ALTER TABLE user_tbl RENAME TO backup_tbl; # 刪除表格 DROP TABLE IF EXISTS backup_tbl;