Linux安装PostgreSQL
- 安装postgresql仓库:
yum install https://download.postgresql.org/pub/repos/yum/9.6/redhat/rhel-7-x86_64/pgdg-centos96-9.6-3.noarch.rpm
- 安装客户端软件包:
yum install postgresql96
- 安装服务端软件包:
yum install postgresql96-server
- 初始化数据库并设置开机启动:
/usr/pgsql-9.6/bin/postgresql96-setup initdb
systemctl enable postgresql-9.6
systemctl start postgresql-9.6
- 修改配置监听网段
vim /var/lib/pgsql/9.5/data/postgresql.conf
listen_addresses = '*' #监听任何网段地址
- 允许远程主机登录
vim /var/lib/pgsql/9.6/data/pg_hba.conf
host all all 0.0.0.0/0 md5
TYPE 表示主机类型,值可能为: 若为 `local` 表示是unix-domain的socket连接, 若为 `host` 是TCP/IP socket 若为 `hostssl` 是SSL加密的TCP/IP socket
DATABASE 表示数据库名称,值可能为: `all` ,`sameuser`,`samerole`,`replication`,`数据库名称` ,或者多个 数据库名称用 `逗号`,注意ALL不匹配 replication
USER 表示用户名称,值可以为: `all`,`一个用户名`,`一组用户名` ,多个用户时,可以用 `,`逗号隔开, 或者在用户名称前缀 `+` ;在USER和DATABASE字段,也可以写一个单独的 文件名称用 `@` 前缀,该文件包含数据库名称或用户名称
ADDRESS 可以为 `主机名称` 或者`IP/32(IPV4) `或 `IP/128(IPV6)`,主机 名称以 `.`开头,`samehost`或`samenet` 匹配任意Ip地址
METHOD 可以为"trust", "reject", "md5", "password", "scram-sha-256",
"gss", "sspi", "ident", "peer", "pam", "ldap", "radius" or "cert"
注意 若为`password`则发送的为明文密码
修改配置文件pg_hba.conf 中的参数,必须重启 `postgreSql`服务,若要允许其它IP地址访问
该主机数据库,则必须修改 `postgresql.conf` 中的参数 `listen_addresses` 为 `*`
示例:
# TYPE DATABASE USER ADDRESS METHOD
host all all 10.10.56.17/32 md5
允许IP地址为10.10.56.17的所有用户可以通过MD5的密码验证方式连接主机上所有的数据库。
host 参数表示安装PostgreSQL的主机 all
第一个all 表示该主机上的所有数据库实例 all
第二个all 表示所有用户
10.10.56.17/32 表示需要连接到主机的IP地址,32表示IPV4
md5 表示验证方式
- 重新加载postgresql
systemctl reload postgresql-9.6
- 查看版本号
psql --version
- 以postgres用户登陆终端
su - postgres
- 创建新用户dbuser
-bash-4.2$ createuser -s dbuser
-s表示是以superuser的身份创建用户
- 创建属于dbuser的数据库mydb
-bash-4.2$ createdb -O dbuser mydb
- 以dbuser的身份登录mydb数据库
psql -U dbuser -d mydb
- 以postgres用户登录postgres数据库,postgres是安装默认创建的用户,没有登录密码
sql postgres
- 查看库列表
postgres=# \l
- 查看用户列表
postgres=# \du
- 退出
postgres=# \q
- 创建root用户,createdb是权限,还有其他权限,比如superuser、createuser等,createdb是最小的权限
postgres=# create user root createdb;
- 修改root的密码为123456
postgres=# alter user root password '123456';
- 创建库testdb
postgres=# create database testdb owner root;
- 删除testdb库
postgres=# drop database testdb;