Fedora19更改postgres數據目錄,並創建用戶初始化數據庫


1,安裝數據庫
# yum install postgresql postgresql-server postgresql-contrib

2,修改目標目錄權限,使普通用戶(postgres)能夠創建文件
chmod 777 /data

3,切換到普通用戶
su -postgres

4,創建postgres數據庫目錄
mkdir -p /data/gwac_db/pgsql/data

5,使用普通用戶初始化數據庫,數據目錄的所有權爲普通用戶
-D參數指定postgres數據目錄,默認是/var/lib/pgsql/data,同時該目錄也是postgres用戶的用戶目錄
initdb -D /data/gwac_db/pgsql/data/
或者 
pg_ctl init -D /data/gwac_db/pgsql/data/

6,使用管理員賬戶初始化數據庫:
su - postgres -c '/usr/bin/initdb -D /data/gwac_db/pgsql/data/'

7,修改配置文件
postgresql.conf 監聽IP地址及端口
去掉下面兩行前的#,並將localhost改爲*
listen_addresses = '*'
port = 5432
pg_hba.conf 訪問權限控制
在文件最後添加
host all all 190.168.1.0/24 password
/usr/lib/systemd/system/postgresql.service 設置服務啓動時的用戶及數據庫目錄
修改
Environment=PGDATA=/data/gwac_db/pgsql/data
然後運行如下命令,重新加載服務
systemctl --system daemon-reload

*額外篇
在上面的改完後,使用9啓動服務命令,服務起不來,最終發現與 SELinux 的安全設置有關。
最後將SELinux的安全級別設置爲permissive,服務啓動成功。enforcing級別實在搞不定,這個問題留着以後吧。
參考鏈接
爲postgres添加SELinux管理的額外的目錄:
查看SELinux安全級別
# getenforce
爲postgres添加額外可訪問的目錄
# semanage fcontext -a -t postgresql_db_t " /data/gwac_db/pgsql/data (/.*)?"
將SELinux配置應用到目錄屬性
# restorecon -Rv /data/gwac_db/pgsql/data
查看目錄的SELinux屬性
# ls -dZ /data/gwac_db/pgsql/data 
查看目錄的SELinux及其子目錄及文件夾的屬性
# ls -lZ /data/gwac_db/pgsql/data
查看默認postgres數據目錄的SELinux屬性
# ls -dZ /var/lib/pgsql/data 默認目錄
新建目錄一直是unconfined_u:object_r:postgresql_db_t:s0,而默認目錄的system_u:object_r:postgresql_db_t:s0
個人估計是這個問題導致postgres數據庫無法啓動。

8,添加爲系統服務
systemctl enable postgresql.service
命令輸出:ln -s '/usr/lib/systemd/system/postgresql.service'  '/etc/systemd/system/multiuser.target.wants/postgresql.service'

9,啓動服務
通過系統服務啓動
systemctl start postgresql.service
通過命令啓動
su - postgres -c '/usr/bin/pg_ctl start -D /data/gwac_db/pgsql/data/'

10,登陸初始數據庫
sudo -u postgres psql postgres

11,修改postgres用戶的密碼
\password postgres

12,創建數據庫用戶norm_user,沒有建庫的權限( -D),沒有添加用戶的權限(-A),設置密碼(-P)
sudo -u postgres createuser -D -A -Pnorm_user 

13,創建一個數據庫gwacdb,並設置其用戶爲norm_user
sudo -u postgres createdb -Onorm_user testdb
在系統用戶norm_user 下登陸testdb數據庫
psql testdb

14,其他數據庫操作命令
啓動數據庫
pg_ctl start -D /data/gwac_db/pgsql/data/
關閉數據庫
pg_ctl stop -D /data/gwac_db/pgsql/data/
重新啓動
pg_ctl restart -D /data/gwac_db/pgsql/data/
查看狀態
pg_ctl status -D /data/gwac_db/pgsql/data/
殺死數據庫進程
pg_ctl kill signal_name process_id


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章