zoukankan      html  css  js  c++  java
  • Linux上安装postgres 10.5

    由于接触了华为的elk大数据平台,里面封装的是postgres ,就想着安装一下,熟悉一下postgres数据。

    安装包下载:https://www.postgresql.org/ftp/source/    

    可以选择自己想下载的版本。这里我们下载v10.5

    随后开始安装:

    1.把包上传到虚拟机中postgresql-10.5.tar.gz

    2.解压缩:

    gunzip postgresql-10.5.tar.gz  

    tar -xvf postgresql-10.5.tar

    3.进行编辑安装:

    ./configure         --预编辑
    make
    su                       --进root用户
    make install       --安装
    adduser postgres               --创建postgres
    mkdir /usr/local/pgsql/data   --创建目录
    chown postgres /usr/local/pgsql/data   
    su - postgres
    /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data   --初始化数据库

    /usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &        --启动数据库

    遇到错误:
    [postgres@master ~]$ more logfile 
    2018-12-20 15:47:11.867 CST [28074] LOG:  listening on IPv6 address "::1", port 5432
    2018-12-20 15:47:11.867 CST [28074] LOG:  listening on IPv4 address "127.0.0.1", port 5432
    2018-12-20 15:47:11.868 CST [28074] FATAL:  could not remove old lock file "/tmp/.s.PGSQL.5432.lock": 不允许的操作
    2018-12-20 15:47:11.868 CST [28074] HINT:  The file seems accidentally left over, but it could not be removed. Please remove the file by hand and try again.
    2018-12-20 15:47:11.868 CST [28074] LOG:  database system is shut down

    解决方法:
    chown -R postgres:postgres /tmp             --root用户

    /usr/local/pgsql/bin/createdb test             --创建test数据库
    /usr/local/pgsql/bin/psql test                    --进入test数据库

    [postgres@master bin]$ /usr/local/pgsql/bin/psql test      
    psql (10.5)
    Type "help" for help.
    
    test=# 

    启动或重启server
    先确保是切换到了/pgsql/bin目录下,并且切换Linux用户postgres
    cd /usr/local/pgsql/bin/
    su – postgres
    启动server:
    ./pg_ctl start -D /usr/local/pgsql/data

    重启:
    ./pg_ctl restart -D /usr/local/pgsql/data 

    waiting for server to shut down....2018-12-20 16:34:51.304 CST [28748] LOG:  received fast shutdown request
    2018-12-20 16:34:51.305 CST [28748] LOG:  aborting any active transactions
    2018-12-20 16:34:51.306 CST [28944] FATAL:  terminating connection due to administrator command
    2018-12-20 16:34:51.307 CST [28945] FATAL:  terminating connection due to administrator command
    2018-12-20 16:34:51.307 CST [28942] FATAL:  terminating connection due to administrator command
    2018-12-20 16:34:51.308 CST [28941] FATAL:  terminating connection due to administrator command
    2018-12-20 16:34:51.310 CST [28748] LOG:  worker process: logical replication launcher (PID 28755) exited with exit code 1
    2018-12-20 16:34:51.312 CST [28750] LOG:  shutting down
    2018-12-20 16:34:51.327 CST [28748] LOG:  database system is shut down
     done
    server stopped
    waiting for server to start....2018-12-20 16:34:51.413 CST [29138] LOG:  listening on IPv4 address "0.0.0.0", port 5432
    2018-12-20 16:34:51.413 CST [29138] LOG:  listening on IPv6 address "::", port 5432
    2018-12-20 16:34:51.415 CST [29138] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
    2018-12-20 16:34:51.438 CST [29139] LOG:  database system was shut down at 2018-12-20 16:34:51 CST
    2018-12-20 16:34:51.442 CST [29138] LOG:  database system is ready to accept connections
     done
    server started

    新建数据库和可以登录数据库的用户密码
    确保是在/usr/local/pgsql/bin/目录下
    ./createdb mydb

    创建用户(如用户名为lin,密码为LinBug)有两种方式:

    第一种:
    CREATE USER或CREATE ROLE:CREATE USER是CREATE ROLE的一个别名。
    唯一的区别是CREATE USER命令缺省是LOGIN,而CREATE ROLE命令缺省是NOLOGIN。
    先进入默认的postgres数据库:
    ./psql
    然后执行:
    CREATE USER zhang WITH PASSWORD 'zhang';
    创建成功提示如下
    [postgres@master bin]$ ./psql
    psql (10.5)
    Type "help" for help.

    postgres=# CREATE USER zhang WITH PASSWORD 'zhang';
    CREATE ROLE
    postgres=#
    第二种:
     pg封装的命令方式:
    [postgres@master bin]$ ./createuser -P zhang
    Enter password for new role:
    Enter it again:
    2018-12-20 16:04:01.792 CST [28674] ERROR:  role "zhang" already exists
    2018-12-20 16:04:01.792 CST [28674] STATEMENT:  CREATE ROLE zhang PASSWORD 'md578d7c325e6ea326d9c1a5c5b1172a59d' NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT LOGIN;
    createuser: creation of new role failed: ERROR:  role "zhang" already exists

    访问数据库

    * 确保在/usr/local/pgsql/bin/目录下,
    以默认用户名访问默认数据库(默认的用户名和数据库名都是postgres):
    ./psql
    于是进入PG的交互终端psql
    [postgres@master bin]$ ./psql
    psql (10.5)
    Type "help" for help.

    postgres=#

    以名为zhang的角色登录名为mydb的数据库:

    ./psql mydb -U zhang
    可以看出,当psql终端的提示符为=#时,表示当前登录的是超级用户,而当提示符为=>时则为普通用户
    [postgres@master bin]$ ./psql mydb -U zhang
    psql (10.5)
    Type "help" for help.

    mydb=>

    远程访问数据库设置
    * 远程访问数据库的认证方式主要有很多方式,我只设置基于TCP/IP连接的trust认证方式
    需设置两个配置文件,
    1)修改配置文件postgresql.conf,
    vim /usr/local/pgsql/data/postgresql.conf
    修改监听地址:
    #listen_addresses=’localhost’
    #将上面这行改成如下
    listen_addresses=’*’

    修改配置文件/pgsql/data/pg_hba.conf:
    vim /usr/local/pgsql/data/pg_hba.conf
    添加一条IP授权记录(如192.168.2.23),可以对一个网段授权
    # 这是在/pgsql/data/pg_hba.conf文件里加
    # IPv4 local connections:
    host    all             all             127.0.0.1/32            trust
    host    all             all             0.0.0.0/0               trust

    设置完需要重启数据库才能生效。

    远程客户端连接

    使用的软件为:Dbeaver

    主要的就是以上配置。

    现在可以在客户端操作数据库了。

    <<完>>

  • 相关阅读:
    tensorflow2.0第1章 Tensorflow简介与环境搭建
    SIGAI机器学习第二十四集 聚类算法1
    SIGAI机器学习第二十三集 高斯混合模型与EM算法
    51nod1429 巧克力
    CTSC2018 Day2T1 Juice混合果汁
    CF1B Spreadsheets
    CF2B The least round way
    【模板】点分治
    【模板】AC自动机
    【模板】网络流-最大流 Dinic
  • 原文地址:https://www.cnblogs.com/hello-wei/p/10150322.html
Copyright © 2011-2022 走看看