源码安装postgresql9.6(ubuntu16.04)

一:前期准备

    1.  更新postgres安装源

创建文件/etc/apt/sources.list.d/pgdg.list,并为存储库添加一行

sudo vi /etc/apt/sources.list.d/pgdg.list

并为存储库添加一行

deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main

导入存储库签名密钥,并更新软件包列表

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \

sudo apt-key add -

sudo apt-get update

    1.  安装依赖

root@vm-199:~# sudo apt-get install libreadline-dev

root@vm-199:~# sudo apt-get install zlib1g-dev

root@vm-199:~# sudo apt-get install gcc

二:开始安装

2.1  解压文件

        创建解压安装目录

                mkdir -p /opt/postgresql

        解压

                tar -zxvf postgresql-9.6.11.tar.gz

        在解压后的包内运行配置命令

                ./configure -prefix=/opt/postgresql

        运行make

        可能报错

                The program 'make' can be found in the following packages:

               * make

               * make-guile

Try: apt install

        解决办法

                sudo apt-get install build-essential

 

                make     

        验证安装是否成功,输入命令:

ls -l /usr/local/pgsql/

如果 bin include lib 和 share都出现,说明安装成功

        运行make install

                make      install

        验证安装是否成功,输入命令:

ls -l /usr/local/pgsql/

如果 bin include lib 和 share都出现,说明安装成功

2.2  设置用户账户

                adduser postgres

                passwd postgres

        创建postgresql 数据目录,分别运行:

                mkdir /opt/postgresql/data/

chown postgres:postgres /opt/postgresql/data

        验证

                ls -ld /opt/postgresql/data

                出现以下结果为正确

                drwx------ 19 postgres postgres 4096 Apr 29 19:20 /opt/postgresql/data

        初始化postgresql数据目录(徐切换至postgres用户)

                su postgres

                /opt/postgresql/bin/initdb -D /opt/postgresql/data/

        验证postgresql数据目录

                ls  -l  /opt/postgresql/data

        启动pgsql数据库

                /opt/postgresql/bin/pg_ctl -D /opt/postgresql/data  start

        测试是否成功(postgres用户下)

                /opt/postgres/bin/psql

        可能报错

The program 'psql' is currently not installed. To run 'psql' please ask your administrator to install the package 'postgresql-client-common'

        解决办法:

                安装配套工具

                apt-get install postgresql-client-common

                apt-get install postgresql-client-9.6

        可能报错

                psql: could not connect to server: No such file or directory

                Is the server running locally and accepting

                connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?

                或者

./pg_ctl: error while loading shared libraries: libpq.so.5: cannot open shared object file: No such file or directory

        解决办法:

                vim /etc/ld.so.conf.d/libc.conf

                新增 /opt/postgresql/lib 到libc.conf的文件末尾

                执行

                ldconfig

        测试(在postgres用户下)

                /opt/postgres/psql

三:配置数据库postgresql.conf文件

主要修改为postgresql.conf和pg_hba.conf文件

3.1  设置监听地址及相关目录地址

         设置数据库文件地址

data_directory = '/opt/postgresql/data'

                hba_file = '/opt/postgresql/data/pg_hba.conf'

                ident_file = '/opt/postgresql/data/pg_ident.conf' 

具体修改:将 #listen_addresses = 'localhost' 前的#号去掉,然后将后面的localhost改为*

3.2  设置服务端口

将 #port = 5432 前的#去掉

3.3 设置密码登录

                将#password_encryption = on 前面的#号去掉

        wq保存退出

3.4 修改pg_hba.conf

对pg_hba.conf内容进行配置,然后再在最下面加入

host all all 0.0.0.0 0.0.0.0 md5

四:设置数据库登录密码

        注意区分linux账户和数据库账户

4.1 登录postgresql

                在数据库终端内

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

                退出数据库

                        \q

                切换到roott用户

                        su -root

                删除PostgreSQL用户密码,命令:

                        sudo passwd -d postgres

                设置PostgreSQL系统用户的密码,命令:

                        sudo -u postgres passwd

                按照提示,输入两次新密码(postgres)

        基本完成源码安装

五:后记

5.1 修改启动端口

         如果修改默认端口,则在启动pg的时候要在postgres用户下

         psql -p 修改后的端口号

5.2 为数据库创建用户并分配数据库权限

         root 用户下进入pg

                sudo -u postgres psql

        创建用户’test’,并创建密码 ‘123456’

                create user test with password '123456';

        创建数据库testdb,所有者为test;

                create database testdb owner test;

        将testdbs数据库的所有权限赋予test,否则test只可以登录psql,没有任何数据库操作权限(这样分配的权限,只有对当前数据库的权限,超级用户,建立角色,建立数据库,复制的权限等)

                grant all privileges on database testdb to test;

        为数据库的用后增加权限,超级用户,建立角色,建立数据库,复制的权限等

        查看当前数据库用户的权限

\du

        为用户分配超级用户权限

                alter role test superuser;

        为用户分配建立角色的权限

                alter role test createrole;

        为用户分配建立数据库的权限

                alter role test createdb;

        为用户分配复制的权限

                alter role test Replication;

        为用户分配复制的权限为用户分配绕过RLS的权限

                alter role test BypassRLS;

你可能感兴趣的:(源码安装postgresql9.6(ubuntu16.04))