PostgreSQL数据库具有以下优势:
相对Mysql,PostgreSQL有以下几个优点:
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 postgresql12 postgresql12-server
sudo /usr/pgsql-12/bin/postgresql-12-setup initdb
#启动PostgreSQL服务
sudo systemctl start postgresql-12
#设置PostgreSQL服务为开机启动
sudo systemctl enable postgresql-12
初始化后有提示默认路径: /var/lib/pgsql/data
PostgreSQL安装成功之后,会默认创建一个名为postgres的Linux用户,
初始化数据库后,会有名为postgres的数据库,来存储数据库的基础信息,例如用户信息等等,相当于MySQL中默认的名为mysql数据库。
postgres数据库中会初始化一名超级用户postgres
为了方便我们使用postgres账号进行管理,我们可以修改该账号的密码
1、进入PostgreSQL命令行
通过su命令切换linux用户为postgres会自动进入命令行
su postgres
2、启动SQL Shell
psql
3、修改密码
ALTER USER postgres WITH PASSWORD 'NewPassword';
1、开放端口
sudo firewall-cmd --add-port=5432/tcp --permanent
sudo firewall-cmd --reload
2、修改IP绑定
#修改配置文件
vi /var/lib/pgsql/12/data/postgresql.conf
#将监听地址修改为*
#默认listen_addresses配置是注释掉的,所以可以直接在配置文件开头加入该行
listen_addresses='*'
3、允许所有IP访问
#修改配置文件
vi /var/lib/pgsql/12/data/pg_hba.conf
#在文件尾部加入
host all all 0.0.0.0/0 md5
4、重启PostgreSQL服务
#重启PostgreSQL服务
sudo systemctl restart postgresql-12
配置完成后即可使用客户端进行连接
启动SQL shell:
su postgres
psql
退出
quit
su root
#创建数据库
CREATE DATABASE mydb;
#查看所有数据库
\l
#切换当前数据库
\c mydb
#创建表
CREATE TABLE test(id int,body varchar(100));
#查看当前数据库下所有表
\d
#新建用户
CREATE USER zhangjian WITH PASSWORD '123456';
#赋予指定账户指定数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE mydb TO zhangjian;
#移除指定账户指定数据库所有权限
REVOKE ALL PRIVILEGES ON DATABASE mydb TO zhangjian
权限代码:SELECT、INSERT、UPDATE、DELETE、TRUNCATE、REFERENCES、TRIGGER、CREATE、CONNECT、TEMPORARY、EXECUTE、USAGE
这种方法用的是pg的serial类型实现自增,drop表的时候指定的序列也会drop掉
create table tuser01(
id serial PRIMARY KEY,
name varchar,
age int4
);
创建自增序列
CREATE SEQUENCE seq_user_id START 1;
创建表
CREATE TABLE "tuser02" (
"id" int4 NOT NULL DEFAULT nextval('seq_user_id'),
"name" varchar(255) COLLATE "pg_catalog"."default",
"age" int4,
PRIMARY KEY ("id")
);
如果已经建过表,
需要添加自增字段
ALTER TABLE tuser02 ADD COLUMN id int8 NOT NULL DEFAULT nextval('seq_user_id');
需要更新自增字段
alter table tuser02 alter column id set default nextval('seq_user_id');