# Mac安装Postgresql

By [kabukabu](https://paragraph.com/@kabukabu) · 2021-12-27

---

[http://www.postgres.cn/docs/14/index.html](http://www.postgres.cn/docs/14/index.html)

homebrew 安装
-----------

### 安装命令

> brew install postgresql

    To migrate existing data from a previous major version of PostgreSQL run:
      brew postgresql-upgrade-database
    
    This formula has created a default database cluster with:
      initdb --locale=C -E UTF-8 /opt/homebrew/var/postgres
    For more details, read:
      https://www.postgresql.org/docs/14/app-initdb.html
    
    To restart postgresql after an upgrade:
      brew services restart postgresql
    Or, if you don't want/need a background service you can just run:
      /opt/homebrew/opt/postgresql/bin/postgres -D /opt/homebrew/var/postgres
    

启动和关闭 postgresql
----------------

> brew services start postgresql
> 
> brew services stop postgresql

创建数据库和账户
--------

### 初始化数据库及登录

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

> createdb

如果不执行 createdb，会报错：psql: error: could not connect to server: FATAL: database "用户名" does not exist

然后登录PostgreSQL控制台：

> psql
> 
> eternity=#

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

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

### 创建用户及数据库

①创建postgres用户

    CREATE USER postgres WITH PASSWORD '123456';
    

②删除默认生成的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`

---

*Originally published on [kabukabu](https://paragraph.com/@kabukabu/mac-postgresql)*
