linux下安装 postgresql 14


一,linux下安装postgresql        
PostgreSQL: Linux downloads (Red Hat family)
https://www.postgresql.org/download/linux/redhat/

选择合适的版本,几个命令直接安装好。

Centos7下安装postgresql(tar包形式安装)
1、官网下载地址:
https://www.postgresql.org/ftp/source/

2、将下载来tar包上传到linux服务器上

3、将tar包解压到指定目录下
apache
# -C 后面是解压后存放的目录
tar -zxvf postgresql-14.4.tar.gz -C /opt/module/


4、编译,进入到postgresql-14.2目录下,执行下面的命令
执行编译命令前先安装依赖
安装C语言编译器
cmake
yum install gcc -y
安装编译需要的依赖
cmake
yum install -y readline-devel
yum install zlib-devel
执行编译命令
awk
./configure --prefix=/usr/local/postgresql
安装完编译所需的依赖后,执行以上编译命令就可以编译成功喽!

5、安装
gauss
make && make install
执行完毕,在/usr/local目录下就会有pgsql这个目录

6、创建data和log目录

 mkdir /usr/local/postgresql/data
 mkdir /usr/local/postgresql/log


7、加入系统环境变量
打开系统环境配置文件
vim
# 本安装示例中此处的my_env.sh是自己新建的,也可以直接在/etc/profile 中配置
vim /etc/profile.d/my_env.sh
配置环境变量
routeros
export PGHOME=/usr/local/postgresql
export PGDATA=/usr/local/postgresql/data
export PATH=$PATH:$JAVA_HOME/bin:$PGHOME/bin


使配置生效
gradle
source /etc/profile
8、增加用户 postgres 并赋权
awk
useradd postgres
chown -R postgres:root /usr/local/postgresql/


9、初始化数据库
awk
# 切换为自己前面创建的用户
su postgres
# 初始化数据库操作
/usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data/


注:不能在 root 用户下初始数据库,否则会报错


10、编辑配置文件
打开postgresql.conf配置文件
awk
vim /usr/local/postgresql/data/postgresql.conf
修改配置信息
ini
# 设置所有ip可连接
listen_addresses = '*' 

# 设置监听端口
port = 5432 


打开pg_hba.conf配置文件
pgsql
vim /usr/local/postgresql/data/pg_hba.conf
修改配置信息
apache
# 所有数据库(all)、所有用户(all)、从本机(127.0.0.1/32)均可免密访问(trust)
host    all             all             0.0.0.0/0               trust
注:

TYPE:pg的连接方式,local:本地unix套接字,host:tcp/ip连接

DATABASE:指定数据库

USER:指定数据库用户

ADDRESS:ip地址,可以定义某台主机或某个网段,32代表检查整个ip地址,相当于固定的ip,24代表只检查前三位,最后一位是0~255之间的任何一个

METHOD:认证方式,常用的有ident,md5,password,trust,reject。

md5是常用的密码认证方式。

password是以明文密码传送给数据库,建议不要在生产环境中使用。

trust是只要知道数据库用户名就能登录,建议不要在生产环境中使用。

reject是拒绝认证。

11、启动服务
pgsql
pg_ctl start -l /usr/local/postgresql/log/pg_server.log


12、查看版本
ebnf
 psql -v


13、登录数据库
ebnf
psql -U postgres -d postgres


14、第三方可视化工具连接
Navicat Premium

[ postgresql]# pwd
/usr/local/postgresql
[ u01]# cd /app
[ app]# mkdir plstgresql
[ plstgresql]# mkdir data log
[ data]# export PGHOME=/usr/local/postgresql
[ data]# export PGDATA=/app/plstgresql/data
[ data]# export PATH=$PATH:$JAVA_HOME/bin:$PGHOME/bin
[ data]# useradd postgres
[ data]# chown -R postgres:root /usr/local/postgresql/ /app/plstgresql/data
[ data]# su - postgres
[postgres@ ~]$ /usr/local/postgresql/bin/initdb -D /app/plstgresql/data
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "zh_CN.UTF-8".
The default database encoding has accordingly been set to "UTF8".
initdb: could not find suitable text search configuration for locale "zh_CN.UTF-8"
The default text search configuration will be set to "simple".

Data page checksums are disabled.

fixing permissions on existing directory /app/plstgresql/data ... ok
creating subdirectories ... ok
selecting dynamic shared memory implementation ... sysv
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default time zone ... Asia/Shanghai
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

initdb: warning: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    /usr/local/postgresql/bin/pg_ctl -D /app/plstgresql/data -l logfile start

 
 
[postgres@ plstgresql]$ cd /app/plstgresql/data
[postgres@ data]$ vi postgresql.conf
[postgres@ data]$ vi pg_hba.conf
 
[postgres@ data]$ /usr/local/postgresql/bin/pg_ctl stop -D /app/plstgresql/data 
waiting for server to shut down.... done
server stopped
[postgres@ data]$ /usr/local/postgresql/bin/pg_ctl -D /app/plstgresql/data -l logfile start
waiting for server to start.... done
server started
[postgres@ data]$ id
uid=54324(postgres) gid=54326(postgres) 组=54326(postgres)
[postgres@ data]$ cd
[postgres@ ~]$ vi .b*e
[postgres@ ~]$ export PGHOME=/usr/local/postgresql
[postgres@ ~]$ export PGDATA=/app/plstgresql/data
[postgres@ ~]$ export PATH=$PATH:$JAVA_HOME/bin:$PGHOME/bin
[postgres@ ~]$ psql -v
psql:选项需要一个参数 -- v
Try "psql --help" for more information.
[postgres@ ~]$ psql -V
psql (PostgreSQL) 14.7
[postgres@ ~]$ psql -U postgres -d postgres
psql (14.7)
Type "help" for help.

postgres=# 

-----------------设置开机自启动
# PostgreSQL的开机自启动脚本位于PostgreSQL源码目录的contrib/start-scripts路径下。
# linux文件即为linux系统上的启动脚本
[root@i-vfyxrtmx start-scripts]# pwd
/opt/soft/postgresql-14.2/contrib/start-scripts
[root@i-vfyxrtmx start-scripts]# 
[root@i-vfyxrtmx start-scripts]# ls
freebsd  linux  macos

# 1)切换为root用户,修改linux文件属性,添加X属性
[root@i-vfyxrtmx start-scripts]# chmod a+x linux

# 2) 复制linux文件到/etc/init.d目录下,更名为postgresql
[root@i-vfyxrtmx start-scripts]# cp linux /etc/init.d/postgresql

# 3)修改/etc/init.d/postgresql文件的两个变量
prefix设置为postgresql的安装路径(根目录):prefix=/opt/pgsql/postgresql
PGDATA设置为postgresql的数据目录路径:PGDATA="/opt/pgsql/postgresql/data"
普通账户名称:PGUSER=postgres
日志目录:PGLOG="$PGDATA/serverlog"

# 4)设置postgresql服务开机自启动
# centos6.*,Centos7.4 用以下方式
[root@weekend02 init.d]# chkconfig --add postgresql

# 查看开机自启动服务设置成功。
[root@i-vfyxrtmx start-scripts]# chkconfig
......
postgresql         0:off    1:off    2:on    3:on    4:on    5:on    6:off

# 防火墙设置
# centos7.4的设置
#1. 开启防火墙:没有任何提示,表示开启成功
systemctl status firewalld
systemctl start firewalld
#2. 添加mysql服务到防火墙,并加载
firewall-cmd --permanent --zone=public --add-service=postgresql
firewall-cmd --reload

# centos6.x的设置
# 1)编辑/etc/sysconfig/iptables文件开放5432端口。
[root@weekend02 sysconfig]# cd /etc/sysconfig
[root@weekend02 sysconfig]# vi /etc/sysconfig/iptables
# 添加以下内容, 并重启服务
-A INPUT -p tcp -m tcp --dport 5432 -j ACCEPT

[root@weekend02 sysconfig]# /etc/init.d/iptables restart
iptables:清除防火墙规则:                                 [确定]
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:正在卸载模块:                                   [确定]
iptables:应用防火墙规则:                                 [确定]

# 查看端口是否开放
[root@weekend02 sysconfig]# /sbin/iptables -L -n
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:5432 
ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         
REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination   
6)执行service postgresql start,启动PostgreSQL服务

[root@weekend02 init.d]# service postgresql start
Starting PostgreSQL: ok

# 查看PostgreSQL服务
[root@i-vfyxrtmx sysconfig]# ps -ef | grep postgres
[root@i-vfyxrtmx sysconfig]# netstat -ltnup | grep post
 

-----------------建数据库 用户


[root@test-mesdb-193-45 init.d]# su - postgres
[postgres@test-mesdb-193-45 ~]$ psql
postgres=# \l

postgres=# create user pg password 'pg';
CREATE ROLE
postgres=# ALTER ROLE pg SUPERUSER;
ALTER ROLE
postgres=# create database pg;
CREATE DATABASE
postgres=# \q
 
[postgres@test-mesdb-193-45 ~]$ psql -U pg -d pg -h localhost
psql (14.7)
Type "help" for help.
 


二,设置管理员密码

启动:

 more /var/lib/pgsql/14/initdb.log

Success. You can now start the database server using:

    /usr/pgsql-14/bin/pg_ctl -D /var/lib/pgsql/14/data/ -l logfile start

su - postgres

vi .base_profile

LD_LIBRARY_PATH=/usr/pgsql-14/lib

export LD_LIBRARY_PATH

export PGHOME=/usr/pgsql-14/

export PGDATA=/var/lib/pgsql/14/data

PATH=$PGHOME:$PATH

export PATH

   1,通过ps -aux|grep postgres 命令查询pg库安装地址,安装好后可以在安装目录中找到init.log文件找到管理员账号,一般为postgres

 2,进入data目录

      a),修改pg_hba.conf文件:

             host all all 127.0.0.1/32 md5 修改为 host all all 127.0.0.1/32 trust

            host all all  0.0.0.0/0   trust

     b),修改postgresql.conf:

             listen_addresses = '*' 

             port= 

     c),  修改密码:

           进入PostgreSQL安装目录的bin目录.执行命令.
           psql -d template1 -U postgres -c "alter role postgres password '12345678';"
           如果服务器响应"ALTER ROLE",说明成功.
           然后把pg_hba.conf恢复原样.
          重新启动数据库服务器,重启命令sudo systemctl restart postgresql-${版本号}

三,设置访问用户并设置权限

        使用超级管理员su postgres登录服务然后执行psql登录数据库

         使用命令创建用户注意所有的sql“;”不能少

        CREATE USER yourUser WITH PASSWORD '123456';

        这个时候你就创建了账号yourUser密码为123456 的用户

        在赋予数据库所有操作权限

        GRANT ALL PRIVILEGES ON all tables in schema public TO yourUser; 

        单独赋予增删改查权限

        GRANT SELECT,INSERT,UPDATE,DELETE PRIVILEGES ON all tables in schema public         TO yourUser; 

四,创建数据库

        create database testdb owner   yourUser;

赋权

     GRANT ALL PRIVILEGES ON DATABASE testdb TO yourUser;

ok现在可以用远程工具连接了   
 

你可能感兴趣的:(dba)