https://dinfratechsource.com/2018/11/10/installing-postgresql-9-4-phppgadmin-in-centos-7/
初次安装后,默认生成一个名为postgres的数据库和一个名为postgres的数据库管理员用户,密码随机。这里需要注意的是,同时还生成了一个名为postgres的Linux系统用户
[root@kpsA ~]# cat /etc/passwd|grep postgres
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
修改linux系统postgres用户的密码
步骤一:删除用户postgres的密码[root@kpsA ~]# sudo passwd -d postgres
Removing password for user postgres.
passwd: Success
步骤二:设置用户postgres的密码,根据系统提示输入新的密码
[root@kpsA ~]# sudo -u postgres passwd
Changing password for user postgres.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# Linux登录用户切换到postgres用户sudo su - postgres,退出exit|logout
[root@kpsA ~]# sudo su - postgres
Last login: Mon Nov 11 16:11:30 CST 2019 on pts/3
# 使用psql命令登录PostgreSQL控制台
-bash-4.2$ psql
psql (9.2.13)
输入 "help" 来获取帮助信息.
# 登录还可以用sudo -u postgres psql 或者 psql -U postgres
# 相当于系统用户postgres以同名数据库用户的身份,登录数据库,这是不用输入密码的。如果一切正常,系统提示符会变为"postgres=#",数据库为=#表示这时已经进入了数据库控制台
当前数据库中所有表信息
select * from pg_tables;
查看数据库信息
select version();
您正在使用psql, 这是一种用于访问PostgreSQL的命令行界面
键入: \copyright 显示发行条款
\h 显示 SQL 命令的说明
\? 显示 pgsql 命令的说明
\g 或者以分号(;)结尾以执行查询
\q 退出
postgres=# \?
一般性
\copyright 显示PostgreSQL的使用和发行许可条款
\g [文件] or; 执行查询 (并把结果写入文件或 |管道)
\h [名称] SQL命令语法上的说明,用*显示全部命令的语法说明
\q 退出 psql
查询缓存区
\s [文件] 显示历史记录或将历史记录保存在文件中
postgres-# \s
select version():
...
资讯性
(选项: S = 显示系统对象, + = 其余的详细信息)
\db[+] [模式] 列出表空间
postgres-# \db
List of tablespaces
Name | Owner | Location
------------------------+------------------------+-----------------------------------------------
FWKP_310100000000002_5 | fwkp_310100000000002_5 | /var/lib/pgsql/data/TS_FWKP_310100000000002_5
pg_default | postgres |
pg_global | postgres |
(3 rows)
postgres-# \db[+]
List of tablespaces
Name | Owner | Location | Access privileges | Description
------------------------+------------------------+-----------------------------------------------+-------------------+-------------
FWKP_310100000000002_5 | fwkp_310100000000002_5 | /var/lib/pgsql/data/TS_FWKP_310100000000002_5 | |
pg_default | postgres | | |
pg_global | postgres | | |
(3 rows)
postgres-# \du
List of roles
Role name | Attributes | Member of
------------------------+------------------------------------------------+-----------
fwkp_310100000000002_5 | Create role, Create DB | {}
postgres | Superuser, Create role, Create DB, Replication | {}
postgres-# \du[+]
List of roles
Role name | Attributes | Member of | Description
------------------------+------------------------------------------------+-----------+-------------
fwkp_310100000000002_5 | Create role, Create DB | {} |
postgres | Superuser, Create role, Create DB, Replication | {} |
\l[+] 列出所有的数据库
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------------------+------------------------+----------+-------------+-------------+-----------------------
fwkp_310100000000002_5 | fwkp_310100000000002_5 | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
postgres | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 |
template0 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | zh_CN.UTF-8 | zh_CN.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)
\c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo}
connect to new database (currently "postgres")
postgres-# \c
You are now connected to database "postgres" as user "postgres".
\encoding [编码名称] 显示或设定客户端编码
postgres-# \encoding
UTF8
\password [USERNAME] 安全地为用户改变口令
postgres=# \password postgres
Enter new password:
Enter it again:
\conninfo 显示当前连接的相关信息postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".
变量
\set [名称 [值数]] 设定内部变量,若无参数则列出全部变量
postgres=# \set
AUTOCOMMIT = 'on'
PROMPT1 = '%/%R%# '
PROMPT2 = '%/%R%# '
PROMPT3 = '>> '
VERBOSITY = 'default'
VERSION = 'PostgreSQL 9.2.13 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit'
DBNAME = 'postgres'
USER = 'postgres'
PORT = '5432'
ENCODING = 'UTF8'
外机pgAdmin访问postgres
修改数据库管理员PostgreSQL密码
登录数据库psql -U postgres
方法一:
方法一:
postgres=# alter user postgres with password 'postgres';
ALTER ROLE
方法二:
postgres=# \password postgres
Enter new password:
Enter it again:
查找postgresql.conf文件位置
[root@kpsA ~]# find / -name 'postgresql.conf'
/usr/lib/tmpfiles.d/postgresql.conf
/var/lib/pgsql/data/postgresql.conf
[root@kpsA ~]# vi /var/lib/pgsql/data/postgresql.conf
在连接设置下编辑或添加一行listen_addresses = '*',使PostgreSQL可以接受来自任意IP的连接请求
# - Connection Settings -
listen_addresses = '*'
# what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
# port = 5432 # (change requires restart)
# Note: In RHEL/Fedora installations, you can't set the port number here;
修改pg_hba.conf文件
pg_hba.conf,位置与postgresql.conf相同,虽然上面配置允许任意地址连接PostgreSQL,但是这在pg中还不够,我们还需在pg_hba.conf中配置服务端允许的认证方式。任意编辑器打开该文件,编辑或添加下面一行。修改为上面内容后即可以对任意IP访问进行密码验证
[root@kpsA ~]# vi /var/lib/pgsql/data/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 md5
host all all 0.0.0.0/0 md5
# 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
在防火墙上将PostgreSQL监听的端口放开
firewall-cmd --zone=public --add-port=5432/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
systemctl restart firewalld
执行完以上操作后,运行systemctl restart postgresql重启PostgreSQL服务后,允许外网访问的配置就算生效了
评论
发表评论