Postgresql 101


#1

สร้าง database

createdb [db_name]

dump

pg_dump -d [db_name] > [file.sql]

restore

cat [file.sql] | psql -d [db_name]

ถ้ามันเป็นคนละ host ก็บอกมันไป

cat [file.sql] | psql -h 10.226.36.63 -U postgres -d [db_name]

สร้าง user / เปลี่ยน password

postgres=# CREATE USER user_name;
postgres=# CREATE USER user_name WITH PASSWORD 'new_password;
postgres=# ALTER USER user_name CREATEUSER CREATEDB;

การเปลี่ยน password

จิงๆแล้ว วิธีที่ดีที่สุดคือ เข้า psql shell แล้วพิม

postgres=# \password

แต่ถ้าจะเปลี่ยนของคนอื่นก็ปกติๆ ได้

postgres=# ALTER USER user_name WITH PASSWORD 'new_password';

More about roles e.g. SUPERUSER, CREATEDB

.pgpass :ferris_wheel:

กรณี user/password ยากเกินจะจำ หรือไม่อยากจะพิม ก็ควรจะใส่มันใช้ ~/.pgpass โดยมี format ดังนี้

<host>:<port>:<db_name>:<username>:<password>

จะกี่ line ก็ใส่ไป ถ้าต้องการ wildcard ก็ใช้ * จากนั้นก็จะใช้ psql หรือ pg_dump ได้โดยไม่ต้องใช้ username/password

upgrade version

เวลา upgrade version มันจะเปิดข้อมูลของ version เก่าไม่ได้ สิ่งที่ต้องทำคือ

  1. สร้าง path ให้กับตัวใหม่ (หรือจะ ย้ายของเก่า /var/postgres/ ไปที่อื่นก็ได้)

  2. init database ด้วย postgres ตัวใหม่ให้กับ path ใหม่

     $ initdb -D /data/newer-postgresql-dir
    
  3. upgrade ข้อมูลเดิมจากของเก่าไปของใหม่

     $ pg_upgrade \
         -b /old-postgres/bin -B /new-postgres/bin \
         -d /data/older-postgres-dir -D /data/newer-postgres-dir
    

    ปกติ bin มันอยู่ประมาณ

    • macOS /usr/local/Cellar/postgresql/9.4/bin /usr/local/Cellar/postgresql/9.5.x/bin