在mysql被收购之后,大家发现了另一款开源的数据库,postgresql,虽然centos自带版本9.2也可以用,但是最近的几次升级支持了更多更新的内容,比如,PostgreSQL有一个MySQL无法比拟的优势,那就是PostGIS,PostGIS可以完美支持空间数据存储和空间分析;从PostgreSQL9.3起就内置了JSON数据类型,而9.4又开始支持JSONB,这标志着PostgreSQL实际上已经是一个关系型数据库和NoSQL数据库的结合体了、虽然postgresql是一个关系型数据库,但是近几次更新PostgreSQL的NoSQL性能有益到甚至超过了
步骤:
1、下载源更新源
yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y
2、安装postgresq
先查看postgresql源
yum list | grep postgresql
我们需要安装的是这两个。postgresql10-contrib postgresql10-server
yum install postgresql10-contrib postgresql10-server -y
3、初始化数据库
Postgresql安装目录是/usr/pgsql-10,而Postgresql的数据目录是/var/lib/pgsql/版本号/data目录
在这里,如果在装系统开始分配var空间足够大则可以继续,如果分配var空间不够,我们需要更改数据目录,在这里,我们假设var空间足够大。直接开始初始化。
/usr/pgsql-10/bin/postgresql-10-setup initdb
4、启动数据库并设置开机启动
sudo systemctl start postgresql-10
sudo systemctl enable postgresql-10.service
5、登录postgresql并设置密码
postgresql在安装时默认添加用户postgres
输入
su - postgres
psql
进入数据库
我们来设置密码:
ALTER USER postgres WITH PASSWORD '密码';
退出:\q
备注其他:列出所有库\l 列出所有用户\du 列出库下所有表\d
6、默认情况下postgresql是不用密码不支持远程登录的。我们需要修改配置文件
vi /var/lib/pgsql/10/data/pg_hba.conf
改为:
# TYPE DATABASE USER ADDRESS METHOD
# “local” is for Unix domain socket connections only
local all all md5
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication all peer
#host replication all 127.0.0.1/32 ident
host all all 0.0.0.0/0 md5
7、打开远程访问
vi /var/lib/pgsql/10/data/postgresql.conf
往下拉我们会看到
#listen_addresses = 'localhost'
#port = 5432
需要改成
listen_addresses = '*'
port = 5432
重启postgresql
systemctl restart postgresql-10
8、登录postgresql
postgresql在安装时默认添加用户postgres
输入
su - postgres
psql
进入数据库
此时已经可以进行验证密码
9、基本操作
postgresql:
psql -U username -d dbname -h 127.0.0.1
\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
# 创建新表
CREATE TABLE tb_user(name VARCHAR(20), age INT, date DATE);
# 插入数据
insert into tb_user(name,age) values('wyc',111);
# 选择记录
SELECT * FROM tb_user;
# 更新数据
UPDATE tb_user set name = '李四' WHERE name = '张三';
# 删除记录
DELETE FROM tb_user WHERE name = '李四' ;
# 添加栏位
ALTER TABLE tb_user ADD email VARCHAR(40);
# 更新结构
ALTER TABLE tb_user ALTER COLUMN signup_date SET NOT NULL;
# 更名栏位
ALTER TABLE tb_user RENAME COLUMN signup_date TO signup;
# 删除栏位
ALTER TABLE tb_user DROP COLUMN email;
# 表格更名
ALTER TABLE tb_user RENAME TO backup_tbl;
# 删除表格
DROP TABLE IF EXISTS backup_tbl;