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
- 修改postgresql.conf
编辑或添加下面一行,使PostgreSQL可以接受来自任意IP的连接请求。
listen_addresses = '*'
- 修改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服务后,允许外网访问的配置就算生效了。