Postgresql是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为Postgresql,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。Postgresql支持大部分 sql标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,Postgresql 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 Postgresql,不管是私用、商用、还是学术研究使用。
有人说:自从MysqL被Oracle收购以后,PostgreSQL逐渐成为开源关系型数据库的首选。
但目前我感觉还是使用 MysqL 的多一些;
有公司是使用Postgresql 的小伙伴举个手!
概述
最近有小伙伴在群里提到CentOS下安装Postgresql的问题,我也亲自尝试一下。本文仅仅介绍Postgresql的安装和基本用法,供初次使用者上手。这只是我做为一个Postgresql 的初学者的学习记录,不是最佳实践。以下内容基于CentOS和Ubuntu 操作系统,其它操作系统实在没有精力兼顾,但是大部分内容应该普遍适用。
一、安装
CentOS
yum install postgresql-server 或 dnf install postgresql-serverUbuntu
apt-get install postgresql-9.3后面需要跟版本号
注:Ubuntu 本身默认是包含Postgresql 的;
CentOS 下安装完成后并不会自动启动,需要执行以下命令将其注册为系统服务,使其随系统启动:
service postgresql initdb chkconfig postgresql onFedora 23 及其后续版本:
postgresql-setup initdb systemctl enable postgresql.service systemctl start postgresql.serviceCentOS 下使用yum 默认安装的是9.2版本。
Postgresql服务器默认使用本机的5432端口,可以通过以下命令查看:
ps aux | grep 5432
CentOS下需要先启动服务:
service postgresql start
二、创建用户和数据库
初次安装后,默认生成一个名为postgres的数据库和一个名为postgres的数据库用户。这里需要注意的是,同时还生成了一个名为postgres的Linux系统用户。
创建数据库
createdb mydb
# createdb mydb createdb: could not connect to database template1: FATAL: role "root" does not existroot 角色不存在,数据库中并没有root 这个用户,你的可能提示的不是root,是你当前登录的用户名。
官方文档提示直接跳到 21章,创建用户;但要创建数据库用户必须登录才行;
Ubuntu 下可以使用以下命令切换用户:
sudo su - postgres但CentOS下就这样了。
解决方法参考:centos 切换用户显示bash-4.2$,不显示用户名路径的问题
需要注意的是:切换用户后显示 -bash-4.2$ 其实用户切换已经成功了,只是显示的内容不符合预期;我开始以为是出错了,根本没办法操作。有点傻了。
已经切换到 postgres 用户下了,接下来再执行:
createdb mydb此命令创建一个名称为”mydb“的数据库
创建用户
psql postgres
首先使用\password命令,为postgres用户设置一个密码
\password postgres创建一个用户:
create user root superuser;此命令创建一个名称为”root“的用户,权限为:superuser,超级管理员;
使用”\q“命令退出 psql,切换到 root 用户下,再执行创建数据库命令,一个比较有意思的事情发生了:
创建数据库成功了!
刚刚创建的 root 用户没有设置密码,我们再次登录,为用户设置密码:
Postgresql 是使用的系统的用户验证方式吗?但是我的系统用户 root 和数据库中的用户 root 使用的不是相同的密码。
使用\q命令退出控制台
\q
三、登录数据库
创建新用户和新数据库以后,就要以新用户的名义登录数据库,这时使用的是psql命令。
# psql -U root -d mydb -h 127.0.0.1 -p 5432上面的命令你也可以这样写:
# psql -Uroot -dmydb -h127.0.0.1 -p5432参数说明:
-h=数据库服务器的IP;
-p=数据库服务器的端口号;
还有一种简单的写法(但是需要你的系统用户名同时也是Postgresql的用户):
# psql mydb这只有在本机连接的时候可用,远程连接是不行的。
直接执行“psql”试试:
# psql psql: FATAL: database "root" does not exist根据提示你能猜到什么?
如果你的系统用户名同时也是Postgresql的用户,而且同时存在一个同名的数据库,那么只需要执行“psql”就可以登录了。
四、控制台命令及帮助
执行“help”可以查看基本的帮助
# help You are using psql,the command-line interface to Postgresql. Type: \copyright for distribution terms \h 查看sql命令帮助 \? 查看psql命令帮助 \g 或以分号终止执行查询 \q 退出常用命令:
\l:列出所有数据库 \c [database_name]:连接其他数据库 \d:列出当前数据库的所有表格 \d [table_name]:列出某一张表格的结构 \du:列出所有用户数据库操作:
# 创建新表 CREATE TABLE table_name(id int,name varchar(20); # 表格更名 ALTER TABLE table_name RENAME TO new_table_name; # 删除表格 DROP TABLE IF EXISTS table_name; # 插入数据 INSERT INTO table_name(id,name) VALUES('1','张三'); # 选择记录 SELECT * FROM table_name; # 更新数据 UPDATE table_name set name = '李四' WHERE name = '张三'; # 删除记录 DELETE FROM table_name WHERE name = '李四' ; # 添加栏位 ALTER TABLE table_name ADD column_name varchar(40); # 更新结构 ALTER TABLE table_name ALTER COLUMN column_name SET NOT NULL; # 更名栏位 ALTER TABLE table_name RENAME COLUMN column_name TO signup; # 删除栏位 ALTER TABLE table_name DROP COLUMN column_name;在使用 SSH 客户端工具如 XShell 连接 Linux 系统时,你可能会遇到以下错误: 原文链接:https://www.f2er.com/postgresql/193980.html