Centos7安裝和配置Postgresql數據庫及Navicat鏈接(超全面)

Postgresql官網Linux Red Hat族系統的Postgresql的下載安裝地址:linux

https://www.postgresql.org/download/linux/redhat/sql

1.安裝最新版shell

進入網址,能夠根據提示安裝最新的Postgresql11:數據庫

對應的shell代碼:安全

yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql11
yum install postgresql11-server
/usr/pgsql-11/bin/postgresql-11-setup initdb        //首次初始化數據庫,只能初始化一次
systemctl enable postgresql-11       //開啓系統登錄自啓動
systemctl start postgresql-11            //開啓服務

2.安裝包含於Linux發行版本的Postgresql服務器

安裝Centos7發行版本中的Postgresql9.2:ide

yum install postgresql-server
postgresql-setup initdb     //首次初始化數據庫,只能初始化一次
systemctl enable postgresql.service  //設置開機自啓動,可不開啓,可是每次使用都須要開啓服務
systemctl start postgresql.service     //開啓服務

關閉服務:systemctl stop postgresql.service工具

重啓服務:systemctl restart postgresql.servicepost

3.【補充】如何再次初始化測試

直接再次執行初始化命令會報錯:

由於Postgresql默認路徑/var/lib/pgsql/下的data文件夾非空

查看一下:ll -lhtr /var/lib/pgsql/data

刪除裏面的全部文件:rm -rf /var/lib/pgsql/data/*

從新運行初始化:postgresql-setup initdb

4.爲Postgresql添加新用戶和新數據庫

初次安裝後,默認生成一個名爲postgres的數據庫和一個名爲postgres的數據庫用戶。同時還生成了一個名爲postgres的Linux系統用戶。

(1)使用postgres用戶,來生成其餘用戶和新數據庫。

切換到postgres用戶:# su - postgres

下一步,使用psql命令登陸PostgreSQL控制檯:

這時至關於系統用戶postgres以同名數據庫用戶的身份,登陸數據庫,這是不用輸入密碼的。若是一切正常,系統提示符會變爲"postgres=#",表示這時已經進入了數據庫控制檯。

先使用\password postgres命令,爲postgres用戶設置一個密碼:

(或者經過命令alter user postgres password 'YourPassword';來設置用戶postgres的密碼)

使用\q命令(或直接按ctrl+D)退出。再次登錄就須要密碼了:

僅建立數據庫用戶不建立對應的linux用戶,建立一個名字爲testuser的用戶:

CREATE USER testuser WITH PASSWORD 'abc';

建立一個名爲test1的測試數據庫:create database test1;

(這裏爲建立用戶數據庫,能夠指定全部者:CREATE DATABASE test1 OWNER testuser;)

test1數據庫的全部權限都賦予testuser,不然testuser只能登陸控制檯,沒有任何數據庫操做權限。

GRANT ALL PRIVILEGES ON DATABASE test1 to testuser;

最後測試:

5.【補充】Postgresql數據庫基本命令

登錄命令:psql -h 127.0.0.1 -U testuser -d test1 -p 5432

psql命令參數說明:

-h:數據庫IP 
-U:登陸用戶 
-d:登陸的數據庫 
-p:登陸端口

\dt:列出當前數據庫全部表

列出表名

SELECT   tablename   FROM   pg_tables;
WHERE   tablename   NOT   LIKE   'pg%'
AND tablename NOT LIKE 'sql_%' 
ORDER   BY   tablename;

\l:列出數據庫名(或 SELECT datname FROM pg_database;

\c [數據庫名]:切換數據庫

\d [數據庫] :獲得全部表的名字

\d [表名] : 獲得表結構

經過SQL語句查詢

select * from pg_tables :獲得當前db中全部表的信息(這裏pg_tables是系統視圖)

select tablename from pg_tables where schemaname='public':獲得全部用戶自定義表的名字(這裏"tablename"字段是表的名字,"schemaname"是schema的名字。用戶自定義的表,若是未經特殊處理,默認都是放在名爲public的schema下)

6.配置第三方用戶登錄數據庫

完成以上配置,數據庫僅僅只能進入對應數據庫名字的linux用戶下,才能進入訪問,不然報Ident錯誤和Navicat沒法鏈接成功。

查找數據庫的配置文件:# find / -name pg_hba.conf

打開:# vi /var/lib/pgsql/data/pg_hba.conf

將沒註釋掉的那3個的驗證方法的peerident修改md5

【說明】:

METHOD指定如何處理客戶端的認證。經常使用的有ident,md5,password,trust,reject

ident是Linux下PostgreSQL默認的local認證方式,凡是能正確登陸服務器的操做系統用戶(注:不是數據庫用戶)就能使用本用戶映射的數據庫用戶不需密碼登陸數據庫。用戶映射文件爲pg_ident.conf,這個文件記錄着與操做系統用戶匹配的數據庫用戶,若是某操做系統用戶在本文件中沒有映射用戶,則默認的映射數據庫用戶與操做系統用戶同名。好比,服務器上有名爲user1的操做系統用戶,同時數據庫上也有同名的數據庫用戶,user1登陸操做系統後能夠直接輸入psql,以user1數據庫用戶身份登陸數據庫且不需密碼。不少初學者都會遇到psql -U username登陸數據庫卻出現「username ident 認證失敗」的錯誤,明明數據庫用戶已經createuser。緣由就在於此,使用了ident認證方式,卻沒有同名的操做系統用戶或沒有相應的映射用戶。解決方案:

一、在pg_ident.conf中添加映射用戶;

二、改變認證方式:

md5是經常使用的密碼認證方式,若是你不使用ident,最好使用md5。密碼是以md5形式傳送給數據庫,較安全,且不需創建同名的操做系統用戶。

password是以明文密碼傳送給數據庫,建議不要在生產環境中使用。

trust是隻要知道數據庫用戶名就不須要密碼或ident就能登陸,建議不要在生產環境中使用。

reject是拒絕認證。

在文件查找 listen_addresses,他的值說明若是但願只能從本地計算機訪問PostgreSQL數據庫,就將該項設置爲localhost

若是但願從局域網訪問PostgreSQL數據庫,就將該項設置爲PostgreSQL數據庫的局域網IP地址;

若是但願從互聯網訪問PostgreSQL數據庫,就將該項設置爲PostgreSQL數據庫的互聯網IP地址;

若是但願從任何地方均可以訪問PostgreSQL數據庫,就將該配置項設置爲「*」;

7.配置Navicat可視化管理工具

列出全部端口:netstat -ntlp

把端口和密碼對應填入,測試鏈接,若是報Ident錯誤,請執行步驟6,最後點擊肯定便可。

相關文章
相關標籤/搜索