4
  • 工作中需要用到postgresql,记录一下在Linux环境如何安装和使用

1.安装yum源

地址从http://yum.postgresql.org/repopackages.php 获取

yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm

2.安装PostgreSQL

yum install postgresql96-server postgresql96-contrib

3.初始化数据库

/usr/pgsql-9.6/bin/postgresql96-setup initdb

4.默认情况下PostgreSQL不支持密码登录,如需支持需要修改配置文件

  • 将未注释行中的ident 替换为 md5
vim /var/lib/pgsql/9.6/data/pg_hba.conf
# TYPE DATABASE  USER   ADDRESS     METHOD
# "local" is for Unix domain socket connections only
local all    all          peer
# IPv4 local connections:
host all    all    127.0.0.1/32   ident
# IPv6 local connections:
host all    all    ::1/128     ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication  postgres        peer
#host replication  postgres  127.0.0.1/32   ident
#host replication  postgres  ::1/128     ident
  • 如需开启远程访问,可编辑/var/lib/pgsql/9.6/data/postgresql.conf 文件。
  • #listen_addresses = 'localhost'修改为listen_addresses='*' (当然,此处‘*'也可以改为任何你想开放的服务器IP)
  • 另外对于特定的IP还可以设置开启信任远程连接,修改/var/lib/pgsql/9.6/data/pg_hba.conf,按下面的格式进行添加设置。
# IPv4 local connections:
 host all   all  127.0.0.1/32  trust
 host all   all  8.8.8.8/32(需要连接的服务器IP) trust
  • 修改完配置以后不要忘了重启服务。

5.管理服务,和其他服务一样还是用systemd进行管理

systemctl start postgresql-9.6 #启动服务
systemctl restart postgresql-9.6 #重启服务
systemctl stop postgresql-9.6 #停止服务
systemctl enable postgresql-9.6 #自动启动

6.登录PostgreSQL

  • PostgreSQL 安装完成后,会建立一下‘postgres'用户,用于执行PostgreSQL,数据库中也会建立一个'postgres'用户,如果我们要使用PostgreSQL就必须先登录此帐号。
sudo -i -u postgres
  • 执行后提示符会变为 ‘-bash-4.2$',再运行
  • 同构执行进入 psql 进入postgresql命令行环境。
[root@localhost ~]# sudo -i -u postgres
-bash-4.2$ psql
psql (9.6.1)
Type "help" for help.
  
postgres=#
  • 接着可以执行ALTER USER postgres WITH PASSWORD '123456'来设置postgres用户密码,可通过\q退出数据库

常用命令介绍:

  • 控制台命令

    • 除了前面已经用到的password命令(设置密码)和q命令(退出)以外,控制台还提供一系列其他命令。
    \h:查看SQL命令的解释,比如\h select。
    \?:查看psql命令列表。
    \l:列出所有数据库。
    \c [database_name]:连接其他数据库。
    \d:列出当前数据库的所有表格。
    \d [table_name]:列出某一张表格的结构。
    \du:列出所有用户。
    \e:打开文本编辑器。
    \conninfo:列出当前数据库和连接的信息。
  • 数据库操作

    • 基本的数据库操作,就是使用一般的SQL语言。
    # 创建新表 
    CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);
    # 插入数据 
    INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');
    # 选择记录 
    SELECT * FROM user_tbl;
    # 更新数据 
    UPDATE user_tbl set name = '李四' WHERE name = '张三';
    # 删除记录 
    DELETE FROM user_tbl WHERE name = '李四' ;
    # 添加栏位 
    ALTER TABLE user_tbl ADD email VARCHAR(40);
    # 更新结构 
    ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
    # 更名栏位 
    ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
    # 删除栏位 
    ALTER TABLE user_tbl DROP COLUMN email;
    # 表格更名 
    ALTER TABLE user_tbl RENAME TO backup_tbl;
    # 删除表格 
    DROP TABLE IF EXISTS backup_tbl;

蒋哲
353 声望11 粉丝