Zihao

Make small but daily progress

0%

PostgreSQL mac 环境下初识篇

强大的开源对象关系数据库系统,它使用并扩展了SQL语言。在mac环境下,可以使用 brew 来安装,也可以直接下载app安装。

初始化数据库

1
initdb /usr/local/var/postgres

启动或停止数据库

启动服务

1
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

停止服务

1
pg_ctl -D /usr/local/var/postgres stop -s -m fast

如果先嫌麻烦,可以加入开机自动启动

1
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents

操作数据库

pgAdmin 是一个可视化数据库服务器管理工具。

SQL Shell (psql ) 控制台数据库管理入口。

在安装的过程中,会自动为系统生成一个账号PostgreSQL,密码随机,这里你要重设一个密码。

重设密码

控制台下:

1
2
sudo passwd -d postgres
password -d 为删除指定用户密码

然后设置新密码:

1
sudo -u postgres passwd

然后你就可以用 postgres 用户在服务器上通过 pgAdmin 或者 psql 来操作数据库了 。

psql 的简单操作

点击 SQL Shell (psql) 启动控制台应用。

1
2
3
4
5
6
7
Server [localhost]:    //第一步 ,默认本地 ,直接回车即可 ,远程数据库 ,请输入远程服务器IP
Database [postgres]: //第二步 ,执行数据库 , postgresql 安装时已经默认安装 postgres 数据库 ,直接回车进入此库
Port [5432]: //第三步 ,默认绑定 5432 端口 ,如果你有修改请这里指定 ,否则默认连接此端口(注意防火墙放行端口)
Username [postgres]: //第四步 ,默认使用 postgres 用户登录数据库 ,没有指定用户的话 ,直接回车
psql (9.4.1)
Type "help" for help
postgres=# //看到这一步 ,已经成功进入 postgres 数据库 。

或者你可以用下面一条命令来登录PostgreSQL

1
2
psql -U postgres -d postgres -h 127.0.0.1 -p 5432
//参数说明: -U 指定用户 -d 指定数据库 -h 数据库服务器ip -p 端口

如果你的系统登录用户名和PostgreSQL数据库操作用户名相同的话,可以省略 -U 参数 。

如果你的Mac 命令控制台不支持psql,那么需要你手动添加到全局变量里:

1
2
locate psql | grep /bin
/Library/PostgreSQL/9.4/bin/psql

编辑.bash_profile文件或.bashrc文件,添加命令别名

1
alias psql=/Library/PostgreSQL/9.4/bin/psql

然后让.bash_profile生效即可

1
source .bash_profile

psql 控制台简单的操作命令

1
2
3
4
5
6
7
8
9
10
11
\h select。
\? 查看psql命令列表。
\l 列出所有数据库。
\c [database_name]:连接其他数据库。
\d 列出当前数据库的所有表格。
\d [table_name]:列出某一张表格的结构。
\du 列出所有用户。
\e 打开文本编辑器。
\conninfo 列出当前数据库和连接的信息。
\q 退出
\password 设置命令

操作sql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 创建新表 
CREATE TABLE user_tbl(name VARCHAR(20), signup_date DATE);
# 插入数据
INSERT INTO user_tbl(name, signup_date) VALUES('张三', '2013-12-22');
# 选择记录
SELECT * FROM user_tbl;
# 更新数据
UPDATE user_tbl set name = '李四' WHERE name = '张三';
# 删除记录
DELETE FROM user_tbl WHERE name = '李四' ;
# 添加栏位
ALTER TABLE user_tbl ADD email VARCHAR(40);
# 更新结构
ALTER TABLE user_tbl ALTER COLUMN signup_date SET NOT NULL;
# 更名栏位
ALTER TABLE user_tbl RENAME COLUMN signup_date TO signup;
# 删除栏位
ALTER TABLE user_tbl DROP COLUMN email;
# 表格更名
ALTER TABLE user_tbl RENAME TO backup_tbl;
# 删除表格
DROP TABLE IF EXISTS backup_tbl;

# 创建一个 PostgreSQL 用户

createuser username -P
#Enter password for new role:
#Enter it again:
上面的 username 是用户名,回车输入 2 次用户密码后即用户创建完成。更多用户创建信息可以 “createuser –help” 查看。

# 创建数据库

createdb dbname -O username -E UTF8 -e
上面创建了一个名为 dbname 的数据库,并指定 username 为改数据库的拥有者(owner),数据库的编码(encoding)是 UTF8,参数 “-e” 是指把数据库执行操作的命令显示出来。

更多数据库创建信息可以 “createdb –help” 查看。

连接数据库

1
psql -U username -d dbname -h 127.0.0.1

数据的导出

1
2
3
4
5
pg_dump -U postgres(用户名) (-t 表名) 数据库名(缺省时同用户名) > 路径/文件名.sql
[html] view plain copy
pg_dump -U postgres -t system_calls wangye > ./test.sql
ls
9.1 test.sql

数据的导入

导入数据时首先创建数据库再用psql导入:

1
2
3
createdb newdatabase
psql -d newdatabase -U postgres -f mydatabase.sql // sql 文件在当前路径下
psql -d databaename(数据库名) -U username(用户名) -f < 路径/文件名.sql // sql 文件不在当前路径下

赋予用户超级权限

1
2
sudo -u postgres psql
CREATE USER root WITH SUPERUSER;
  • 本文作者: Zihao Yao
  • 本文链接: https://yaozihao.com/postgresql_mac/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!

欢迎关注我的其它发布渠道