PostgreSQL 使用總結

本文不是一篇有嚴肅主題的 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 這裏只做簡單記錄,網上很多詳細的blog
    • pg_ctl stop 停 pg
    • pg_ctl start 啓動 pg
    • pg_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
    • 最後一步,重啓 PG。

結束語

  • 終於是稍微有點熟悉 PG 了,纔敢把筆記放出來,當然本篇 blog 主要是怕筆記丟掉。好記性不如爛鍵盤嘛。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章