富群兴 网络设计工作室
企业智慧ERP应用软件服务商

Linux 安装 PostgreSQL 步骤和注意事项

 二维码 1110
发表时间:2018-12-21 11:03

Linux安装postgresql

  PostgreSQL是加州大学伯克利分校计算机系开发的对象关系型数据库管理系统,目前拥有活跃的开源社区贡献,最近排名也不断前进,pgsql中其实有很多有点和设计理念都要比mysql更好一些,比如稳定性比较强;高并发读写情况下性能依然较好;支持丰富的几何类型并且在GIS领域地位领先;text支持各种长度,无需区分;nosql特性,支持array和json存储和搜索等,因为这些优点,pgsql应用场景也不断扩展,下面详细写一下pgsql入门的第一步,即先将pgsql安装至操作系统,过程如下:

  1. 下载软件包

  pgsql有很多类型的包,对于不同linux发行版都有对应的编译好的包,安装很方便,另外如果对于通用的linux平台可以编译源码安装或者安装官方编译好的二进制包,源码包的安装仅仅比二进制安装多出一个编译步骤,其余的都一样,所以这里使用安装方式是安装编译好的二进制包

  pgsql官网地址:https://www.postgresql.org/,进入后点击download就来到下载页,这里点击Linux下面的Other Linux选项,然后点击下方的tar.gz archive下载二进制归档,

  

  然后就来到最终的pgsql下载页了,地址为:https://www.enterprisedb.com/download-postgresql-binaries,如下图下载最新版本的10.1

  

  如上图根据机器的位数下载对应的包,我这里下载的是x86-64的包,为:postgresql-10.1-1-linux-x64-binaries.tar.gz,下载之后准备安装

  2. 安装并初始化

  解压数据库并放到指定目录:

tar -xvzf postgresql-10.1-1-linux-x64-binaries.tar.gz# 解压出来之后目录为pgsqlmv pgsql/ /monchickey/

  现在pgsql的安装目录就是/monchickey/pgsql

  创建pgsql用户并设置密码:

useradd postgrespasswd postgres# 两次输入密码并确认

  注意:这里设置密码是linux用户postgres的登录密码,不是pgsql服务器的密码

  创建pgsql数据目录: mkdir /monchickey/pgsql_data

  给postgres用户授权目录访问权限: chown postgres /monchickey/pgsql_data/

  然后切换到postgres用户来操作数据库,pgsql数据库就以postgres为默认用户,执行: su - postgres 切换

  切换之后建议修改~/.bash_profile将pgsql的bin目录加至环境变量中,方便直接使用pgsql相关命令,下面初始化数据库:

/monchickey/pgsql/bin/initdb -D /monchickey/pgsql_data/

  等待执行完毕,没什么问题就初始化成功了,提示如下:

  

  如图根据提示可以启动数据库: /monchickey/pgsql/bin/pg_ctl -D /monchickey/pgsql_data/ -l logfile start 这里-l指定日志文件位置,这里直接输出在家目录下的logfile中,这个可以自己指定,这里-D指定数据目录,默认如果不加数据目录直接报错找不到,可以刚才说的环境变量配置文件中~/.bash_profile加入一行: export PGDATA=/monchickey/pgsql_data 然后source进去即可,这样pgsql会自动去找PGDATA环境变量值,找不到才会报错

  启动之后此时执行: ps -ef | grep postgres 就可以看到相关进程如下:

  

  pgsql默认的端口号为5432,通过netstat命令或者lsof命令都可以看到监听情况:

  

  现在可以看到pgsql默认监听的是localhost或127.0.0.1,目前只能本机访问,如果远程访问就连接不上了,具体的配置文件是data目录下的postgresql.conf,可以通过修改这个配置文件来调整各个参数,比如:listen_addresses可以修改绑定的地址,默认是localhost,port可以修改监听的端口号,默认是5432,max_connections可以修改最大客户端连接数量,默认是100等等,这里就不再详细说了

  停止postgresql的命令为: /monchickey/pgsql/bin/pg_ctl -D /monchickey/pgsql_data/ stop

  3. 命令行界面简单操作

  pgsql和mysql一样可以通过交互式提示符连接操作,连接方式如下:

./bin/psql -h 127.0.0.1 -d postgres -U postgres -p 5432

  其中-h参数指定服务器地址,默认为127.0.0.1,默认不指定即可,-d指定连接之后选中的数据库,默认也是postgres,-U指定用户,默认是当前用户,-p 指定端口号,默认是"5432",其它更多的参数选项可以执行: ./bin/psql --help 查看

  登录进去默认界面如下所示:

  

  命令提示符前面的就是当前的数据库,使用 \l 查看当前的数据库列表

  

  默认postgres,template0和1这3个库是不允许操作的,创建新的数据库执行: CREATE DATABASE test WITH OWNER=postgres ENCODING='UTF-8'; 这样就创建好了数据库test,然后可以执行命令 \c test 切换当前数据库为test,然后执行 \d 可以查看当前数据库下的所有表:

  

  创建一个简单的数据表可以执行下面的命令:

CREATE TABLE student (  id integer NOT NULL,  name character(32),  number char(5),  CONSTRAINT student_pkey PRIMARY KEY (id));

  

  创建表之后可以使用 \d student; 查看表的详细信息,如下:

  

  现在可以插入一条测试数据: INSERT INTO student (id, name, number) VALUES (1, '张三', '1023');

  然后可以查询这条数据: SELECT * FROM student WHERE id=1;

  

  最后可以执行 \q 退出交互式界面

  文章摘自:https://www.cnblogs.com/freeweb/p/8006639.html

Linux下PostgreSQL数据库安装、配置与日常服务管理

1. 数据库安装与配置步骤

  1. 安装环境准备

    • 操作系统: Oracle Linux Server 6.5

    • IP 地址: 192.168.6.177

    • 版本信息: MySQL Community Server 5.7.18

    • 安装方式: RPM包

  2. 下载安装包

    • 访问PostgreSQL网站

      PostgreSQL网站
    • 根据操作系统类型和版本下载相应的安装包

      需要下载以下的安装包:

      • postgresql96-9.6.3-4PGDG.rhel6.x86_64.rpm

      • postgresql96-contrib-9.6.3-4PGDG.rhel6.x86_64.rpm

      • postgresql96-libs-9.6.3-4PGDG.rhel6.x86_64.rpm

      • postgresql96-server-9.6.3-4PGDG.rhel6.x86_64.rpm

  3. 安装PostgreSQL

    • 将Postgres安装包放置在同一个文件夹中, 执行安装命令

      [root@DB-Server-Node1 ~]# rpm -ivh postgresql96-*.rpmPreparing...                ########################################### [100%]1:postgresql96-libs      ########################################### [ 25%]2:postgresql96           ########################################### [ 50%]3:postgresql96-contrib   ########################################### [ 75%]4:postgresql96-server    ########################################### [100%]
    • 安装文件夹说明

      通过RPM包安装, Postgres安装程序会在/var和/usr下创建文件夹。

      /var/lib/pgsql: 用于存放Postgres数据库默认的数据文件夹
      /usr/pgsql-${version}: 用于存放Postgres数据库的命令、依赖库及文档目录等信息

    • 将Postgres命令加入系统路径

      修改/etc/profile文件, 将Postgres命令加入系统路径,并测试

      [root@DB-Server-Node1 ~]# vi /etc/profile... ...# 在文件最后加入以下语句export PATH=$PATH:/usr/pgsql-9.6/bin# 保存退出后, 执行source命令, 让配置即时生效[root@DB-Server-Node1 ~]#  source /etc/profile# 测试Postgres命令[root@DB-Server-Node1 share]# postgres --versionpostgres (PostgreSQL) 9.6.3
  4. 初始化数据库

    • 使用Postgres数据库默认的数据文件存储目录

      • CentOS 6/RedHat 6/Oracle Linux 6

      [root@DB-Server-Node1 bin]#  service postgresql-9.6 initdb或者[root@DB-Server-Node1 bin]# /etc/init.d/postgresql-9.6 initdb
      • CentOS 7/Redhat 7/Oracle Linux 7

      [root@DB-Server-Node1 bin]# /usr/pgsql-9.6/bin/postgresql96-setup initdb
    • 使用自定义的数据存储目录

      # 创建数据存储目录mkdir -p /data/postgres# 修改目录权限 chown -R postgres:postgres /data/postgres# 初始化数据库su -l postgres -c "/usr/pgsql-9.6/bin/initdb --no-locale -U postgres -E utf8 -D /data/postgres -W"
    • 添加Postgres环境变量(可选)

      [root@DB-Server-Node1 ~]# vi /etc/profile ... ... # 添加Postgres环境变量  PGDATA=/data/postgresPGHOST=127.0.0.1PGDATABASE=postgresPGUSER=postgresPGPORT=5432export PGDATA PGHOST PGDATABASE PGUSER PGPORT
    • 修改/etc/init.d/postgresql-9.6中的变量(使用自定义数据目录)

      如果使用自定义数据存放目录,而不是使用PostgreSQL默认数据目录时, 需要修改启动文件中的PGDATA变量,将PGDATA目录指向自定义的数据目录, 这样在使用service posgresql-9.6 start命令时才能正确启动。

      [root@DB-Server-Node1 ~]# vi /etc/init.d/postgres-9.6# 修改默认文件目录到指定的数据目录PGDATA=/data/postgres# 保存后退出:wq!
  5. 配置数据库访问

    • 修改postgres.conf文件

      主要配置参数详解:

      • listen_addresses='localhost'
        Postgresql监听的网卡ip,默认仅仅本地,可以配置多个,使用“,”分割。“*” 代表所有的网卡ip

      • port=5432  
        Postgres服务端口

      • max_connections=100  
        最大服务器连接数

      • superuser_reserved_connections=3 
        为管理员保留的专用连接数,普通用户无法使用这些连接,不能大于max_connections

      • authentication_timeout=60s  
        登录验证超时时间设置

      • ssl=false
        是否使用SSL进行连接

      • password_encryption=true  
        当使用create user、alter user管理用户时,如果没有显示进行加密与否的限定,postgresql服务器是否自动进行密码加密

      • shared_buffers=32m 
        共享缓存,非常重要的性能参数,其最小值为(128k,16k*max_connections)

      • max_prepared_transactions=5
        最大并行prepared 事务,如果为0,则禁止使用prepared事务,最大值与max_connections相同

      • temp_buffers=8m
        每个会话可以使用的临时(表)缓存大小

      • work_mem=1m
        指定内部排序、连接、group等等时,postgresql可以使用的内存大小,超过该值,将使用磁盘临时文件; 实际使用的内存和该类操作同时执行的数目相乘

      • maintenance_work_men=16m  
        维护语句vacuum、create index等等可以使用的内存大小; 实际使用的内存和该类操作同时执行的数目相乘

      • fsync=on  
        (物理数据)日志必须同步写入磁盘 
        可能导致严重的性能损失,却能确保最高的日志数据安全。

      • synchronous_commit=on
        (逻辑事务数据)日志必须同步写入磁盘,如果设为on,会立即调用fsync,相当于设置了fsync=on

      • full_page_writes=on
        写整页

      • wal_buffers=64K
        WAL日志缓存大小

      • wal_writer_delay=200ms  
        将wal日志从wal_buffer中写入磁盘的时间周期

      • commit_delay=0ms  
        事务日志commit后,写入磁盘的延时。这个设置只有在commit_sibings(并行的多个排队事务)在延时内存在是才有效

      • commit_siblings=5
        并行事务数

    • 修改pg_hba.conf

       [root@DB-Server-Node1 ~]# vi pg_hba.conf ... ... # "local" is for Unix domain socket connections only local   all             all                                     trust # IPv4 local connections: host    all             all             127.0.0.1/32            trust host    all             all             192.168.6.0/24          trust # IPv6 local connections: host    all             all             ::1/128                 trust

      配置说明:

      • 格式:TYPE DATABASE USER ADDRESS METHOD

      • 参数:

        1. TYPE: 值为local和host, Local值表示为主机Socket连接, host代表允许的主机地址连接

        2. DATABASE: 允许访问的数据库名, all代表允许全部数据库

        3. USER: 表示允许哪个用户访问数据库, all代表所有用户都可以访问

        4. ADDRESS: 表示允许连接的主机信息,可以使用主机IP地址, 也可以使用网段来表示,如192.168.1.0/24表示192.168.1.0网段可以连接

        5. METHOD: 连接方法, 通常使用的值为md5和trust


  6. 启动数据库并测试数据库

    • 启动Postgres数据库

      [root@DB-Server-Node1 init.d]# service postgresql-9.6 startStarting postgresql-9.6 service:                               [  OK  ]
    • 测试数据库

      使用psql命令进行测试。

      psql命令详解:

      • -h host, 指定连接的Postgres数据库IP地址

      • -U username: 指定连接数据库的用户名

      • -d database: 指定连接的数据库名

      • -p port: 指定数据库连接的服务端口

      • -w: 表示不提示用户输入密码

      • -W : 表示验证数据库用户密码

      • -l : 表示列出Postgres可用的数据库信息

      示例如下:

      [root@DB-Server-Node1 9.6]# psql -h localhost -U postgres -d postgres -WPassword for user postgres: psql (9.6.3)Type "help" for help.postgres=#
    • 修改用户密码

      使用默认脚本service postgresql initdb/usr/pgsql-9.6/bin/postgresql96-setup initdb初始化数据库时,需要修改用户的密码。在修改Postgres用户密码时,需要确保以下条件:

      配置"pg_hba.conf"时需要确定服务器本地址的验证方法为trust, 即:
      host all all 127.0.0.1/32 trust

      如果为peer|indent|md5方法时,需要将其修改为trust, 否则登录时会提醒输入用户密码。切换系统用户为postgres, 通过psql -h localhost -U postgres -d postgres登录Postgres数据库,进入数据后,使用alter user postgres with password '设置的新密码'来为用户修改默认密码。

      示例如下:

      [root@DB-Server-Node1 9.6]#  su - postgres-bash-4.2$ psql -h localhost -U postgres -d postgres -wPassword for user postgres: psql (9.6.3)Type "help" for help.postgres=#  alter user postgres with password '123456';ALTER ROLEpostgres=#
    • 设置服务开机自启动

      chkconfig postgresql-9.6 on

2. Postgres日常服务管理

  • 启动数据库:pg_ctl start -D /data/postgres

  • 重启数据库: pg_ctl restart -D /data/postgres

  • 停止数据库:pg_ctl stop -D /data/postgres

  • 强制重启:pg_ctl restart -D /data/postgres -m f

  • 强制停止:pg_ctl stop -D /data/postgres -m f

  • 加载配置:pg_ctl reload -D /data/postgres

  • 显示服务状态:pg_ctl status -D /data/postgres

  • 连接数据库: psql -h 127.0.0.1 -U postgres -p 5432 -d postgres -W

linux中mv命令使用详解

mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files),是Linux系统下常用的命令,经常用来备份文件或者目录。

1.命令格式:
   mv [选项] 源文件或目录 目标文件或目录

2.命令功能:
视mv命令中第二个参数类型的不同(是目标文件还是目标目录),mv命令将文件重命名或将其移至一个新的目录中。当第二个参数类型是文件时,mv命令完成文件重命名,此时,源文件只能有一个(也可以是源目录名),它将所给的源文件或目录重命名为给定的目标文件名。当第二个参数是已存在的目录名称时,源文件或目录参数可以有多个,mv命令将各参数指定的源文件均移至目标目录中。在跨文件系统移动文件时,mv先拷贝,再将原有文件删除,而链至该文件的链接也将丢失。

3.命令参数:
-b :若需覆盖文件,则覆盖前先行备份。
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会更新(update)
   -t  : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目标目录,该选项适用于移动多个源文件到一个目录的情况,此时目标目录在前,源文件在后。

4.命令实例:

实例一:文件改名
命令:
mv test.log test1.txt
输出:

文章摘自:https://www.linuxidc.com/Linux/2017-11/148411.htm

Linux下su与su -命令的区别

在启动服务器ntpd服务时遇到一个问题

使用 su root 切换到root用户后,不可以使用service命令;

使用 su - 后,就可以使用service命令了。

原因:

su命令和su -命令区别就是:

su只是切换了root身份,但Shell环境仍然是普通用户的Shell;而su -连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误,报command not found的错误。

su切换成root用户以后,pwd一下,发现工作目录仍然是普通用户的工作目录;而用su -命令切换以后,工作目录变成root的工作目录了。

用echo $PATH命令看一下su和su - 后的环境变量已经变了。

以此类推,要从当前用户切换到其它用户也一样,应该使用su -命令。


在线留言

在线留言

了解更多软件开发、行业ERP、企业官网应用服务

公司
*
手机
*
描述
*
验证码
 换一张
*
提交留言
联系QQ:2590552134
手机号码:13682478927
联系邮箱:2590552134@qq.com
联系地址:广东省深圳市龙岗区横岗镇新光一街35号
热搜词:ERP软件开发,进销存管理软件免费下载,企业管理软件,企业ERP管理系统
粤公网安备 44030702000841号
我们的使命是助力商家全渠道管理与业务拓展,同时在供应链重塑的背景下,实现商业模式的全新升级
——————
热线电话
136 8247 8927
website qrcode