简介 PostgreSQL 是一个免费的对象-关系数据库服务器(ORDBMS),在灵活的BSD许可证下发行。
PostgreSQL 的 Slogan 是 “世界上最先进的开源关系型数据库”。
本次安装选择二进制源码包编译安装
服务器操作系统为Centos7.6,PostgreSql安装版本为14.0
安装包下载 在官网源码包选择14.0版本下载,下载地址:PostgreSQL: File Browser
准备工作 下载环境依赖 1 yum install -y cmake make gcc zlib zlib-devel gcc-c++ perl readline readline-devel python36 tcl openssl ncurses-devel openldap pam flex
如果出现File “/usr/bin/yum“, line 30 except KeyboardInterrupt, e:这类错误,多半yum命令的python环境发生改变了,需要改回来:
1 2 3 cd /usr/bin rm -rf python ln -s python2.7 python
创建postgre用户 1 2 groupadd postgres adduser -g postgres postgres
修改用户密码 此处修改密码即修改登录用户密码(如果你使用postgres作为登录用户的话)
如果使用弱密码方便登录时,可执行以下命令:
1 echo "123" | passwd --stdin postgres
创建用户目录并授权 1 2 3 mkdir -p /home/postgres; chmod -R 775 /home/postgres; chown -R postgres:postgres /home/postgres;
开放防火墙端口 默认5432
1 2 firewall-cmd --zone=public --add-port=5432/tcp --permanent; firewall-cmd --reload
修改操作系统打开最大文件句柄数 1 2 echo "postgres soft nofile 65535" >> /etc/security/limits.conf echo "postgres hard nofile 65535" >> /etc/security/limits.conf
重新登陆后,执行以下命令会出现65535
创建数据库目录 1 mkdir -p /home/postgres/{postgre14,pgdata}
编译并安装 1 2 3 4 5 su - postgres tar -xzvf ./postgresql-14.0.tar.gz -C /home/postgres cd /home/postgres/postgresql-14.0 ./configure --prefix=/home/postgres/postgre14 make && make install
配置环境变量 1 2 3 4 5 6 7 8 cat >> ~/.bash_profile <<"EOF" export PGPORT=5432 export PGDATA=/home/postgres/pgdata export PGHOME=/home/postgres/postgre14 export LD_LIBRARY_PATH=$PGHOME/lib:$LD_LIBRARY_PATH export PATH=$PGHOME/bin:$PATH:. EOF source ~/.bash_profile
数据库及参数初始化 1 /home/postgres/postgre14/bin/initdb -D $PGDATA -E UTF8 --locale=en_US.utf8 -U postgres
指定-D数据目录,-E字符编码, --locale本及语言环境,-U初始化用户信息。
修改配置文件 1 2 3 4 5 6 7 cat >> /home/postgres/pgdata/postgresql.conf <<"EOF" listen_addresses = '*' port=5432 logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%a.log' EOF
listen_addresses 表示postgre进程监听的网卡地址,配置*表示监听所有。port服务监听端口配置logging_collector=on,启动日志收集器log_directory 表示日志文件在PGDATA目录下的文件夹位置。log_filename表示日志文件的名称配置访问权限 1 2 3 4 5 cat > /home/postgres/pgdata/pg_hba.conf << EOF # TYPE DATABASE USER ADDRESS METHOD local all all trust host all all 0.0.0.0/0 md5 EOF
启动数据库新建用户 1 2 3 4 5 6 7 8 # 启动命令 pg_ctl start # 重启命令 pg_ctl restart # 查看数据库运行状态 pg_ctl status # 停止数据库 pg_ctl stop
新建用户 进入postgresql命令行
新建用户postgres
1 alter user postgres with password 'password';
一般来说,我们的程序在运行过程中,不会直接使用postgres用户,而是新建一个用户。
1 2 3 4 5 6 # 新建一个用户 acai CREATE USER acai WITH password '密码'; # 新建一个数据库acaidb,属主是acai CREATE DATABASE acaidb OWNER acai; # 为用户acai赋权,all表示所有权限,acaidb的管理用户 GRANT all ON DATABASE acaidb TO acai;
实际上在生产环境中,我们需要创建两个用户,一个数据库管理用户用于管理表、视图等操作;另一个是程序用户,用于操作数据库表里面的数据,完成增删改查。
1 2 CREATE USER acaiuser WITH password '*******'; GRANT update,delete,insert,select ON ALL TABLES IN SCHEMA public TO acaiuser;
开机自启动 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 cat > /etc/systemd/system/postgre14.service <<"EOF" [Unit] Description=PostgreSQL database server 14.4 Documentation=man:postgres(1) After=network.target [Service] Type=forking User=postgres Group=postgres Environment=PGPORT=5432 Environment=PGDATA=/home/postgres/pgdata ExecStart=/home/postgres/postgre14/bin/pg_ctl start -D ${PGDATA} -s -o "-p ${PGPORT}" -w -t 300 ExecStop=/home/postgres/postgre14/bin/pg_ctl stop -D ${PGDATA} -s -m fast ExecReload=/home/postgres/postgre14/bin/pg_ctl reload -D ${PGDATA} -s KillMode=mixed KillSignal=SIGINT TimeoutSec=120 [Install] WantedBy=multi-user.target EOF
执行下列命令,使得PostgreSQL数据库开机自启动脚本生效。
1 2 systemctl daemon-reload systemctl enable postgre14
后续再启停数据库,查看数据库状态,就可以使用下面的这些命令了
1 2 3 systemctl start postgre14 systemctl stop postgre14 systemctl status postgre14
参考连接 PostgreSql生产级别数据库安装要考虑哪些问题?