【ubuntu22.04安装配置PostgreSQL】

1.安装

sudo apt update;
sudo apt install postgresql postgresql-contrib;

查看版本:
sudo -u postgres psql -c "SELECT version();"
查看运行状态:
sudo service postgresql status;

2. PostgreSQL 角色和身份认证方式

PostgreSQL 数据库访问权限是通过角色来处理的。一个角色代表一个数据库用户或者一个数据库用户组。

PostgreSQL 支持多种身份认证方式。最常用的方法如下:

  • Trust - 只要满足pg_hba.conf定义的条件,一个角色就可以不使用密码就能连接服务器
  • Password - 通过密码,一个角色可以连接服务器。密码可以被存储为 scram-sha-256, md5, 和 password(明文)。
  • Ident - 仅仅支持 TCP/IP 连接。它通常通过一个可选的用户名映射表,获取客户端操作系统用户名。
  • Peer - 和 Ident 一样,仅仅支持本地连接。
    PostgreSQL 客户端身份验证通常被定义在pg_hba.conf文件中。默认情况下,对于本地连接,PostgreSQL 被设置成身份认证防范 peer。

为了以postgres用户身份登录 PostgreSQL 服务器,首先切换用户,然后使用psql工具访问 PostgreSQL。
sudo su - postgresql; psql;
从这里开始,你可以与 PostgreSQL 实例交互。退出 PostgreSQL Shell,输入:
\q退出交互环境。

也可以直接使用sudo -u postgres psql,来访问PostgreSQL,而不切换用户。

常用的指令:
psql 数据库名 --连接数据库
select rolname,rolpassword from pg_authid;–查看用户名密码
select usename,passwd from pg_shadow;–查看用户名密码
select version(); – 查看版本
select current_database();–查看当前数据库
\l --查看所有数据库
select pg_database_size(‘postgres’); --查看单个数据库的大小
select pg_database.datname, pg_database_size(pg_database.datname) AS size from pg_database; --查看所有数据库的大小
select pg_size_pretty(pg_database_size(‘postgres’)); --以KB,MB,GB的方式来查看数据库大小
\dt --查看表
\d test --查看test表的定义
\password username --修改密码
\password --设置密码。
? --查看psql命令列表。
\c [database_name] --连接其他数据库,切换数据库。
\conninfo --列出当前数据库和连接的信息。
\d --列出当前数据库的所有表格。
\d [table_name] --列出某一张表格的结构。
\du --列出所有用户。
\e --打开文本编辑器。
help --帮助
\h --查看SQL命令的解释,比如\h select。
\q --退出

JDBC的URL的格式:
jdbc:mysql://[host][,failoverhost...][:port]/[database] [?propertyName1][=propertyValue1][&propertyName2][=propertyValue2]... 例如:jdbc:mysql://127.0.0.1/uba_db?useUnicode=true&characterEncoding=UTF-8
URL用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库,postgre jdbc支持的URL的写法为:

jdbc:postgresql:database
jdbc:postgresql:/
jdbc:postgresql://host/database
jdbc:postgresql://host/
jdbc:postgresql://host:port/database
jdbc:postgresql://host:port/
jdbc:postgresql://host1:port1,host2:port2/database

ipv6地址:
jdbc:postgresql://[::1]:5740/database

也可以在url中加入其他参数如:
?uer=root&password=root&useUnicode=true&characterEncoding=utf8
参见Ubuntu下PostgreSQL的安装和简单操作

3.创建 PostgreSQL 角色和数据库

  1. 新建用户test ,sudo su - postgres -c "createuser test"
  2. 新建数据库testdb ,sudo su - postgres -c "createdb testdb"
  3. 通过sudo -u postgres psql连接到postgrersql的shell环境,执行grant all privileges on database testdb to test;来授权用户test可以all操作testdb数据库;

4.启动远程访问PostgreSQL服务器数据库

默认情况下,PostgreSQL 服务器仅仅监听本地网络接口:127.0.0.1。

为了允许远程访问你的 PostgreSQL 服务器,打开配置文件postgresql.conf并且在CONNECTIONS AND AUTHENTICATION一节添加listen_addresses = '*'

sudo vim /etc/postgresql/14/main/postgresql.conf
  1. 重启使生效sudo service postgresql restart;
  2. 确认修改效果ss -nlt | grep 5432;
  3. 编辑pg_hba.conf文件,配置服务器接受远程连接:
    sudo vi /etc/postgresql/14/main/pg_hba.conf指定目的用户的ip来源,例如
    host all all 0.0.0.0/0 md5,重启服务生效
  4. 防火墙上打开端口5432端口:
  5. 开启日志
    编辑sudo vi /etc/postgresql/12/main/postgresql.conf,
    参考以下配置修改并重启生效
logging_collector = on          
log_directory = 'log'                   
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' 
log_file_mode = 0600                    

查看sql查询日志

ubuntu@ubuntu:/var/lib/postgresql$ sudo tail -f /var/lib/postgresql/12/main/log/postgresql-2022-03-10_151933.log
2022-03-10 15:27:54.015 CST [114476] test@test LOG:  execute <unnamed>: SELECT pp.oid as poid, pp.* FROM pg_catalog.pg_proc pp WHERE pp.proname ILIKE $1 AND pp.pronamespace IN ($2,$3) ORDER BY pp.proname LIMIT 10
2022-03-10 15:27:54.015 CST [114476] test@test DETAIL:  parameters: $1 = '城市id', $2 = '2200', $3 = '11'
2022-03-10 15:27:54.740 CST [114476] test@test LOG:  execute <unnamed>: SELECT pc.oid,pc.relname,pc.relnamespace,pc.relkind FROM pg_catalog.pg_class pc WHERE pc.relkind in('r','v','m','f') AND pc.relname ILIKE $1 AND pc.relnamespace IN ($2,$3) ORDER BY pc.relname LIMIT 10
2022-03-10 15:27:54.740 CST [114476] test@test DETAIL:  parameters: $1 = 'dtl_supply_order_open_summary', $2 = '2200', $3 = '11'
2022-03-10 15:27:54.741 CST [114476] test@test LOG:  execute <unnamed>: SELECT pp.oid as poid, pp.* FROM pg_catalog.pg_proc pp WHERE pp.proname ILIKE $1 AND pp.pronamespace IN ($2,$3) ORDER BY pp.proname LIMIT 9
2022-03-10 15:27:54.741 CST [114476] test@test DETAIL:  parameters: $1 = 'dtl_supply_order_open_summary', $2 = '2200', $3 = '11'
2022-03-10 15:27:56.913 CST [114476] test@test LOG:  execute <unnamed>: select * from dtl_supply_order_open_summary
2022-03-10 15:27:56.916 CST [114476] test@test LOG:  execute <unnamed>: SELECT c.oid, a.attnum, a.attname, c.relname, n.nspname, a.attnotnull OR (t.typtype = 'd' AND t.typnotnull), a.attidentity != '' OR pg_catalog.pg_get_expr(d.adbin, d.adrelid) LIKE '%nextval(%' FROM pg_catalog.pg_class c JOIN pg_catalog.pg_namespace n ON (c.relnamespace = n.oid) JOIN pg_catalog.pg_attribute a ON (c.oid = a.attrelid) JOIN pg_catalog.pg_type t ON (a.atttypid = t.oid) LEFT JOIN pg_catalog.pg_attrdef d ON (d.adrelid = a.attrelid AND d.adnum = a.attnum) JOIN (SELECT 16397 AS oid , 1 AS attnum UNION ALL SELECT 16397, 2 UNION ALL SELECT 16397, 3 UNION ALL SELECT 16397, 4 UNION ALL SELECT 16397, 5 UNION ALL SELECT 16397, 6 UNION ALL SELECT 16397, 7 UNION ALL SELECT 16397, 8) vals ON (c.oid = vals.oid AND a.attnum = vals.attnum)
2022-03-10 15:27:57.119 CST [114476] test@test LOG:  execute <unnamed>: SELECT current_schema(),session_user
2022-03-10 15:27:57.120 CST [114476] test@test LOG:  execute <unnamed>: SHOW search_path
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
安装 PostgreSQLUbuntu 22.04 上的步骤如下: 1. 打开终端并运行命令 `sudo apt update` 更新软件包列表。 2. 运行命令 `sudo apt install postgresql postgresql-contrib` 安装 PostgreSQL 和相关的扩展包。 3. 为了允许远程访问 PostgreSQL 服务器,打开配置文件 `postgresql.conf`。可以使用 `sudo vim /etc/postgresql/14/main/postgresql.conf` 命令来编辑该文件。 4. 在 `postgresql.conf` 文件的 `CONNECTIONS AND AUTHENTICATION` 部分,添加 `listen_addresses = '*'`,以允许来自任何 IP 地址的连接。 5. 重新启动 PostgreSQL 服务使修改生效,可以使用命令 `sudo service postgresql restart`。 6. 确认修改的效果,可以使用命令 `ss -nlt | grep 5432` 检查 PostgreSQL 是否在监听 5432 端口。 7. 编辑 `pg_hba.conf` 文件,配置服务器接受远程连接。可以使用命令 `sudo vi /etc/postgresql/14/main/pg_hba.conf` 来编辑该文件。在文件中添加一行,例如 `host all all 0.0.0.0/0 md5` 表示接受来自任何 IP 地址的连接。 8. 重启 PostgreSQL 服务使修改生效。 9. 如果服务器有防火墙,需要打开 5432 端口以允许远程访问。 10. 如果需要开启日志,可以编辑 `postgresql.conf` 文件并修改以下配置项: - 将 `logging_collector` 设置为 `on`,开启日志收集器。 - 设置 `log_directory` 为你希望保存日志文件的目录。 - 设置 `log_filename` 为日志文件的命名格式。 - 设置 `log_file_mode` 为日志文件的权限。 11. 重启 PostgreSQL 服务使修改生效。 请注意,上述步骤中的命令可能需要使用 `sudo` 获得管理员权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值