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,最后点击肯定便可。

相关文章
相关标签/搜索