Postgresql基础:修订间差异

来自牛奶河Wiki
跳到导航 跳到搜索
 
(未显示同一用户的17个中间版本)
第2行: 第2行:


=== Install ===
=== Install ===
  sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
<b># ubuntu</b>
  wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
  sudo sh -c 'echo "deb <nowiki>http://apt.postgresql.org/pub/repos/apt</nowiki> $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
  wget --quiet -O - <nowiki>https://www.postgresql.org/media/keys/ACCC4CF8.asc</nowiki> | sudo apt-key add -
  sudo apt-get update
  sudo apt-get update
  sudo apt-get -y install postgresql
  sudo apt-get -y install postgresql
<b># centos7</b>
yum install postgresql-server postgresql
service postgresql initdb
systemctl start postgresql
指定版本:postgresql-12


安装完毕后,系统会创建一个数据库超级用户 postgres,密码为空。
安装完毕后,系统会创建一个数据库超级用户 postgres,密码为空。
==== 远程访问 ====
# 修改密码(原密码为空)
ALTER USER postgres WITH PASSWORD 'postgres';
# 修改配置文件,目录:/var/lib/pgsql/??/data/
# postgresql.conf
listen_addresses = '*'
# pg_hba.conf
host    all    all    0.0.0.0/0    md5


==== 将原 DB 目录移至新路径 ====
==== 将原 DB 目录移至新路径 ====
  1. 修改 pg 配置文件(/etc/postgresql/15/main/postgresql.conf) 中 data_directory
  1. 修改 pg 配置文件(/etc/postgresql/15/main/postgresql.conf) 中 data_directory
  2. mv PGDB_OLD /u01/pgdb/db/
  2. mv PGDB_OLD /u01/pgdb/db/,并修改目录权限
3. export PGDATA=/u01/pgdb/db/bidb  # 不写也不影响下面语句执行。
systemctl start postgres 相当于:/usr/lib/postgresql/15/bin/postgres -D /u01/pgdb/db/bidb -c config_file=/etc/postgresql/15/main/postgresql.conf


==== 使用新 DB 目录 ====
==== 使用新 DB 目录 ====
  mkdir -p /u01/pgdb
  mkdir -p /u01/pgdb/db/owdb
  chown -R postgres:postgres /u01/pgdb
  chown -R postgres:postgres /u01/pgdb/db/owdb
  /usr/lib/postgresql/15/bin/initdb /u01/pgdb
  /usr/lib/postgresql/15/bin/initdb /u01/pgdb/db/owdb


  /usr/lib/postgresql/15/bin/pg_ctl -D /u01/pgdb -l logfile start
  /usr/lib/postgresql/15/bin/pg_ctl -D /u01/pgdb/db/owdb -l logfile start
  # 仅仅把原目录移过来是不够的,还需要 hba_file(/etc/postgresql/15/main/pg_hba.conf)、pg配置文件(/etc/postgresql/15/main/postgresql.conf)等
  # 此方式适合新建 DB。
  # 尽量不要使用这种方式,除非是同一台机器启动多个DB
# 尽量不要使用这种方式,除非是同一台机器启动多个DB。(可以用上面的将原 DB 目录移至新路径并修改配置文件方式)
 
==== Remove ====
apt-get --purge remove postgresql*
rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
rm -r /var/log/postgresql/
一般来说,用上面语句无法完全清除 postgresql,可以使用以下语句:
  apt-get autoremove postgresql


=== DBA ===
=== DBA ===
第30行: 第60行:
  # 指定DB目录
  # 指定DB目录
  /usr/lib/postgresql/15/bin/pg_ctl -D /u01/pgdb -l logfile start
  /usr/lib/postgresql/15/bin/pg_ctl -D /u01/pgdb -l logfile start
重载配置
pg_ctl reload [-D DATADIRT]
select pg_reload_conf();


==== 查看数据库文件目录 ====
==== 查看数据库信息 ====
文件目录
  show data_directory;
  show data_directory;
 
查看数据库版本
==== 查看数据库版本 ====
  show server_version;
  show server_version;
  select version();
  select version();
  psql --version
  psql --version
==== 查看主备状态 ====
select * from pg_catalog.pg_stat_replication;
sync_state = async  # 主备数据复制使用异步方式;
state = streaming    # 流复制方式


==== 执行SQL ====
==== 执行SQL ====
第46行: 第84行:
  select * from pg_database;
  select * from pg_database;


==== connect databases ====
# connect databases
  \c postgres
  \c postgres


第52行: 第90行:
  \dt
  \dt
  \dt+          # 表类型、大小
  \dt+          # 表类型、大小
==== user ====
create user repl REPLICATION LOGIN password 'PASSWD';
# 修改密码
alter user postgres password 'PASSWD';
=== SQL ===
\c postgre
create table test (ky int, val varchar(20));
insert into test values(1, 'hello, world!'), (2, 'Hello, postgresql.');
=== 参考 ===
# [https://www.runoob.com/postgresql PostgreSQL 教程]
# [https://cloud.tencent.com/developer/article/1558721 PostgreSQL DBA常用SQL查询语句]
[[分类:Develop]]
[[分类:Develop]]
[[分类:DB]]
[[分类:DB]]
[[分类:PostgreSQL]]
[[分类:PostgreSQL]]

2024年5月13日 (一) 15:05的最新版本

PostgreSQL is available in all Ubuntu versions by default.

Install

# ubuntu
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get -y install postgresql
# centos7
yum install postgresql-server postgresql
service postgresql initdb
systemctl start postgresql

指定版本:postgresql-12

安装完毕后,系统会创建一个数据库超级用户 postgres,密码为空。

远程访问

# 修改密码(原密码为空)
ALTER USER postgres WITH PASSWORD 'postgres';
# 修改配置文件,目录:/var/lib/pgsql/??/data/
# postgresql.conf
listen_addresses = '*'
# pg_hba.conf
host    all    all    0.0.0.0/0    md5


将原 DB 目录移至新路径

1. 修改 pg 配置文件(/etc/postgresql/15/main/postgresql.conf) 中 data_directory
2. mv PGDB_OLD /u01/pgdb/db/,并修改目录权限
3. export PGDATA=/u01/pgdb/db/bidb  # 不写也不影响下面语句执行。
systemctl start postgres 相当于:/usr/lib/postgresql/15/bin/postgres -D /u01/pgdb/db/bidb -c config_file=/etc/postgresql/15/main/postgresql.conf

使用新 DB 目录

mkdir -p /u01/pgdb/db/owdb
chown -R postgres:postgres /u01/pgdb/db/owdb
/usr/lib/postgresql/15/bin/initdb /u01/pgdb/db/owdb
/usr/lib/postgresql/15/bin/pg_ctl -D /u01/pgdb/db/owdb -l logfile start
# 此方式适合新建 DB。
# 尽量不要使用这种方式,除非是同一台机器启动多个DB。(可以用上面的将原 DB 目录移至新路径并修改配置文件方式)

Remove

apt-get --purge remove postgresql*
rm -r /etc/postgresql/
rm -r /etc/postgresql-common/
rm -r /var/lib/postgresql/
rm -r /var/log/postgresql/

一般来说,用上面语句无法完全清除 postgresql,可以使用以下语句:

apt-get autoremove postgresql

DBA

Start

# 需要 root 权限
/etc/init.d/postgresql start | stop | restart
systemctl start | stop | restart | status postgresql
# 指定DB目录
/usr/lib/postgresql/15/bin/pg_ctl -D /u01/pgdb -l logfile start

重载配置

pg_ctl reload [-D DATADIRT]
select pg_reload_conf();

查看数据库信息

文件目录

show data_directory;

查看数据库版本

show server_version;
select version();
psql --version

查看主备状态

select * from pg_catalog.pg_stat_replication;
sync_state = async   # 主备数据复制使用异步方式;
state = streaming    # 流复制方式

执行SQL

psql -c "$SQL"

show databases

\l
select * from pg_database;
# connect databases
\c postgres

show tables

\dt
\dt+           # 表类型、大小

user

create user repl REPLICATION LOGIN password 'PASSWD';

# 修改密码
alter user postgres password 'PASSWD';

SQL

\c postgre
create table test (ky int, val varchar(20));
insert into test values(1, 'hello, world!'), (2, 'Hello, postgresql.');

参考

  1. PostgreSQL 教程
  2. PostgreSQL DBA常用SQL查询语句