Mac 上安装配置和简单实用PostgreSQL

PostgreSQL简介

PostgreSQL

PostgreSQL是以加州大学伯克利分校计算机系开发的 POSTGRES,现在已经更名为PostgreSQL,版本 4.2为基础的对象关系型数据库管理系统(ORDBMS)。PostgreSQL支持大部分 SQL标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。

psql

是PostgreSQL数据库的命令行交互工具。

pgAdmin

是PostgreSQL数据库的图形化管理工具。

PostgreSQL安装与卸载

官网安装

在官网上下载安装包或者使用官网提供的Postgres.app,这里就不详细介绍了,因为我们这里使用homebrew来安装。

homebrew安装

brew install postgresql

初始化:

initdb /usr/local/var/postgres

创建数据库和账户

创建数据库和账户

mac安装PostgreSQL后不会创建用户名数据库,执行命令:

createdb

然后登录PostgreSQL控制台:

psql

psql连接数据库默认选用的是当前的系统用户

使用\l命令列出所有的数据库,看到已存在用户同名数据库、postgres数据库,但是postgres数据库的所有者是当前用户,没有postgres用户。

然后我们来完成以下几件事:

一、创建postgres用户

CREATE USER postgres WITH PASSWORD 'XXXXXX';

二、删除默认生成的postgres数据库

DROP DATABASE postgres;

三、创建属于postgres用户的postgres数据库

CREATE DATABASE postgres OWNER postgres;

四、将数据库所有权限赋予postgres用户

GRANT ALL PRIVILEGES ON DATABASE postgres to postgres;

五、给postgres用户添加创建数据库的属性

ALTER ROLE postgres CREATEDB;

这样就可以使用postgres作为数据库的登录用户了,并可以使用该用户管理数据库

登陆控制台指令
psql -U [user] -d [database] -h [host] -p [port]

-U指定用户,-d指定数据库,-h指定服务器,-p指定端口
完整的登录命令,比如使用postgres用户登录

psql -U postgres -d postgres

之前我们直接使用psql登录控制台,实际上使用的是缺省数据

user:当前mac用户
database:用户同名数据库
主机:localhost
端口号:5432,postgresql的默认端口是5432
常用控制台指令
\password:设置当前登录用户的密码
\h:查看SQL命令的解释,比如\h select。
\?:查看psql命令列表。
\l:列出所有数据库。
\c [database_name]:连接其他数据库。
\d:列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du:列出所有用户。
\e:打开文本编辑器。
\conninfo:列出当前数据库和连接的信息。
\password [user]: 修改用户密码
\q:退出
使用PostgreSQL

现在来简单的学习一下使用PostgreSQL,以下命令都在postgres=# 环境下
修改用户密码
之前我们用命令CREATE USER postgres WITH PASSWORD 'XXXXXX';创建了postgres用户,现在我们来修改该用户的密码:

ALTER USER postgres WITH PASSWORD 'XXXXXX'

出现ALTER ROLE, 代表修改角色成功

创建和删除数据库用户

创建user1用户:CREATE USER user1 WITH PASSWORD 'XXXX'

查看数据库用户列表:\du

删除数据库用户:drop user user1;

创建和删除数据库

创建数据库:create database testdb;

查看数据库列表:\l

删除数据库:drop database db1;

创建和删除数据表

选择数据库:\c DatabaseName,比如\c testdb

创建数据库表:CREATE TABLE COMPANY( ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);

删除数据库表: drop table company;

查看数据库信息:\d

查询数据:select * from company

关于第三方连接本地数据库的问题

如何设置PostgreSQL允许被远程访问

/usr/local/var/postgres/postgresql.conf
  1. 修改postgresql.conf
    编辑或添加下面一行,使PostgreSQL可以接受来自任意IP的连接请求。
listen_addresses = '*'
  1. 修改pg_hba.conf
    pg_hba.conf,位置与postgresql.conf相同,虽然上面配置允许任意地址连接PostgreSQL,但是这在pg中还不够,我们还需在pg_hba.conf中配置服务端允许的认证方式。任意编辑器打开该文件,编辑或添加下面一行。
# TYPE  DATABASE  USER  CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

默认pg只允许本机通过密码认证登录,修改为上面内容后即可以对任意IP访问进行密码验证。对照上面的注释可以很容易搞明白每列的含义,具体的支持项可以查阅文末参考引用。

完成上两项配置后执行sudo service postgresql restart重启PostgreSQL服务后,允许外网访问的配置就算生效了。

参考

推荐阅读更多精彩内容