Centos 6.8 下安裝 PostgreSQL安裝
系統信息
[root@Paulpeng data]# cat /etc/redhat-release CentOS release 6.8 (Final) [root@Paulpeng data]# uname -a Linux Paulpeng 2.6.32-642.el6.x86_64 #1 SMP Tue May 10 17:27:01 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux [root@Paulpeng data]#
軟件版本
[root@Paulpeng data]# psql -h 192.168.230.128 -p 5432 -U postgres Password for user postgres: psql (8.4.20) Type "help" for help. postgres=#
yum install postgresql-server -y
初始化數據庫
service postgresql initdb
設置自動啟動
chkconfig postgresql on service postgresql start
配置監聽地址為所有IP
默認postgresql只在127.0.0.1上進行監聽
進入PGDATA目錄(默認在/var/lib/pgsql/data/),找到文件postgresql.conf,增加
cd /var/lib/pgsql/data/ vim postgresql.conf listen_addresses = '*'
設置認證模式,內網中采用password密碼認證的方式,在文件pg_hba.conf文件中增加
host all all 0.0.0.0/0 password
修改默認用戶postgres的密碼
su - postgres psql alter user postgres with password '123456';
重新啟動postgresql的服務
service postgresql restart
登錄測試
psql -h 192.168.230.128 -p 5432 -U postgres
#會提示輸入密碼,輸入剛剛設置過的密碼
登錄成功表示剛剛設置正確
創建角色
create role sentry
設置角色允許登錄
alter role sentry LOGIN
創建新的數據庫
create database sentry owner sentry
使用:
創建數據庫用戶dbuser,並設置密碼。
CREATE USER dbuser WITH PASSWORD 'password';
在shell命令行下,創建數據庫exampledb,並指定所有者為dbuser。
sudo -u postgres createdb -O dbuser exampledb
登錄數據庫
添加新用戶和新數據庫以后,就要以新用戶的名義登錄數據庫,這時使用的是psql命令。
psql -U dbuser -d exampledb -h 192.168.230.128 -p 5432
上面命令的參數含義如下:-U指定用戶,-d指定數據庫,-h指定服務器,-p指定端口。
輸入上面命令以后,系統會提示輸入dbuser用戶的密碼。輸入正確,就可以登錄控制台了。
psql命令存在簡寫形式。如果當前Linux系統用戶,同時也是PostgreSQL用戶,則可以省略用戶名(-U參數的部分)。舉例來說,我的Linux系統用戶名為ruanyf,且PostgreSQL數據庫存在同名用戶,則我以ruanyf身份登錄Linux系統后,可以直接使用下面的命令登錄數據庫,且不需要密碼。
psql exampledb
此時,如果PostgreSQL內部還存在與當前系統用戶同名的數據庫,則連數據庫名都可以省略。比如,假定存在一個叫做ruanyf的數據庫,則直接鍵入psql就可以登錄該數據庫。
psql
另外,如果要恢復外部數據,可以使用下面的命令。
psql exampledb < exampledb.sql
四、控制台命令
除了前面已經用到的\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;