Postgresql:  ​https://www.postgresql.org/ ​

 

[安装]

删除已经存在的pg:

yum remove -y postgresql* && rm -rf  /var/lib/pgsql && rm -rf  /usr/pgsql* && userdel -r postgres && groupdel postgres

 

 

yum:

sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql14-server
sudo /usr/pgsql-14/bin/postgresql-14-setup initdb # 初始化数据库
sudo systemctl enable postgresql-14
sudo systemctl start postgresql-14

 

 

 Docker:

 这里使用docker-compose.yml

 

version: '3'
services:
pgsql:
image: postgres:14.2
container_name: pg14
restart: unless-stopped
environment:
POSTGRES_PASSWORD: 123456
TZ: Asia/Shanghai
ports:
- 5432:5432
volumes:
- ./data:/var/lib/postgresql/data
privileged: true

 启动服务

 

docker exec -it pg14 psql -U postgres -d postgres

 

 

 

[使用]

 

在默认配置下, 之允许本机访问Postgresql

# 切换到postgres用户
su - postgres

Last login: Wed Mar 1 13:16:48 CST 2017 on pts/1
-bash-4.2$ psql

psql (9.2.18)
Type "help" for help.

postgres=#

此时就在数据库postgres中了。

创建新用户:

create user dbuser with password '密码';
注意点: 密码要使用单引号

修改postgres密码

alter user postgres with encrypted password '密码';

 

 

创建用户数据库:

create database demo owner dbuser;

赋权给用户

postgres=# GRANT ALL PRIVILEGES ON DATABASE demo TO dbuser;
注意:这里跟MySQL不同 是需要使用关键字DATABASE

 

 

开启远程访问:

配置文件:/var/lib/pgsql/data/postgresql.conf

listen_addresses = '0.0.0.0'

更多:

cat >> /var/lib/pgsql/14/data/postgresql.conf <<EOF
listen_addresses = '*'
port=5432
unix_socket_directories='/var/lib/pgsql/14/data'
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%a.log'
log_truncate_on_rotation = on
EOF

 

/var/lib/pgsql/data/pg_hba.conf 

添加/修改:允许任意用户从任意机器上以密码方式访问数据库,把下行添加为第一条规则:

host all all 0.0.0.0/0 md5

更多:

cat > /var/lib/pgsql/14/data/pg_hba.conf << EOF
# TYPE DATABASE USER ADDRESS METHOD
host all all 0.0.0.0/0 trust/md5
EOF

 

trust: 相当于免密登录

设置md5即可

重启服务:

sudo systemctl restart postgresql

 

数据库备份:

/usr/pgsql-9.6/bin/pg_dump -h 127.0.0.1 -U rw -d test > pgsql-20220819.sql

将整个库进行备份导出

 

 

 开启防火墙端口:

 

firewall-cmd --add-port=5432/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-port

 

 

 

 

常用命令:

# 查看所有用户及权限
\du

# 退出
\q


# 进入数据库
\d dbname

cli链接:
psql -U lanlang -h 120.xx.xx.xxx -d postgres
-U: 指定用户名
-h: 链接地址
-d: 指定认证数据库
之后 输入密码即可登录


-- 从Postgresql 9.2开始,还可以使用URI格式进行连接:psql postgresql://myuser:mypasswd@myhost:5432/mydb
psql postgresql://postgres:lhr@192.168.66.35:25432/postgres



# 创建数据库
CREATE DATABASE dbname WITH OWNER=postgres ENCODINT='UTF-8';


# 创建表
create table student (
id integer not null,
name character(32),
number char(5),
constraint student_pkey primary key (id)
);