本文不是一篇有嚴肅主題的 blog ,只是好記性不如爛鍵盤,權當做 PG 使用總結的記錄,包括一些問題的總結。
關於 PG 的一些理解
- PG 有一點特別讓人痛苦的:創建一個用戶一定要創建一個系統用戶,據我司運維說,這是爲了創立管理員。只好先記着了,印象中 MySQL 是不需要創建用戶的,不知道是不是會有安全問題。
進入用戶
su - postgres
- 在 root 用戶下,按下
su -
之後可以按tab
鍵進行補全。
進入命令行(進入用戶後接着敲就是了)
psql
查看所有 Schema
select * from information_schema.schemata;
查看所有 database
- 相當於 MySQL 的
show databases;
select datname from pg_database;
查看 database 的 table
- 相當於 MySQL 的
show tables
select table_name from information_schema.tables where table_schema = 'public'
PostgreSQL 命令(以 9.5 版本爲例)
- 目錄位於
/usr/pgsql-9.5/bin
,如果沒有配環境變量的話,需要進入到該目錄或者補全路徑。 pg_ctl
這裏只做簡單記錄,網上很多詳細的blogpg_ctl stop
停 pgpg_ctl start
啓動 pgpg_ctl reload
重啓 pg
PostgreSQL 配置文件的路徑
/usr/lib/pgsql/9.5/data/xxxx.conf
- 比較重要的幾個配置文件
postgresql.conf
服務端的一些配置。pg_hba.conf
客戶端認證配置文件,定義如何認證客戶端。
一些工程的操作
- 創建用戶(一般對於工程上不會選擇
postgres
用戶,就像用 MySQL 不會使用 root 用戶一樣),均在 root 用戶下執行。
sudo -u postgres /usr/pgsql-9.5/bin/createuser -s -e xxxx_user
useradd xxxx_user
- 爲用戶修改密碼
alter user xxxx_user with password 'xxxxx_password';
- 創建 pg 數據庫 xxxx_db ,所有者 爲用戶 xxxx_user,注意下面這個命令中是 O 不是 0(零)。
sudo -u postgres /usr/pgsql-9.5/bin/createdb -E UTF8 -O xxxx_user xxxx_db
- 使用指定用戶登錄指定數據庫(此時不要輸入密碼)
psql -U xxxx_user -d xxxx_db
- 如何使用本機電腦登錄遠端主機的 PostgreSQL ?
- 第 1 步,將
postgresql.conf
裏的 port 換掉,默認是 5432 ,同時該配置也是註釋掉的狀態;爲什麼要換掉呢?主要是怕運維禁掉 5432 端口;雖然端口掃描仍然掃得到,但是換個端口相對會更安全一些。 - 第 2 步,將
postgresql.conf
裏的listen_address
設爲*
。當然專業運維應該會設爲其他的,在下不是專業的,只是爲了解決問題,所以先設爲*
了。這時候如果你重啓的話,在本機電腦使用telnet
命令去查看端口是否存在,應該不會是連接不上的狀態。 - 第 3 步,有可能出現
FATAL: no pg_hba.conf entry for host "xxxxxx", user "xxxx", database "xxxx", SSL off
。- 根據 路人甲JIA 的 blog,需要在
pg_hba.conf
上的最後加一行:host all all 0.0.0.0/0 md5
。
- 根據 路人甲JIA 的 blog,需要在
- 最後一步,重啓 PG。
- 第 1 步,將
結束語
- 終於是稍微有點熟悉 PG 了,纔敢把筆記放出來,當然本篇 blog 主要是怕筆記丟掉。好記性不如爛鍵盤嘛。