之前使用window系统,项目中需要使用到postgresql,新电脑是mac系统,安装过程一波三折,特记下,供自己及其他有需要的人参考
目的- 安装postgresql
- 创建项目数据库
- 导入数据库数据
因为之前window就是在官网下载的安装包,所以也同样在官网下载,但是这台电脑怎么也下载不了,下载速度奇慢,所以改用homebrew来安装
2 使用homebrew安装postgresqlhomebrew不是苹果系统自带的,需要下载安装,具体可参考 链接https://blog.csdn.net/kmust20093211/article/details/44359053
下载完后在终端执行命令安装postgresql
brew install postgresql
查看版本
psql -version
初始化(这步根据提示,如果提示已创建可跳过)
initdb /usr/local/var/postgres
安装完成后会自动打开postgresql服务,这里我启动失败了,通过查看日志发现是遇到了5432端口占用的问题(日志路径/usr/local/var/log),导致的原因是之前我重复安装测试了几次,端口没有关掉,直接重启系统,再打开就成功了
设置开机自启
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
手动启动
pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start
手动关闭
pg_ctl -D /usr/local/var/postgres stop -s -m fast
成功启动后postgresql就安装好了,但是还需要创建数据库,导入数据 与客户端安装不同的是,homebrew安装的是不会创建默认账号postgres的,自然也不会有权限 所以要在执行以下步骤创建并给用户赋权 终端执行命令,其作用是创建一个与当前系统登陆用户同名的数据库,目的是为了可以通过这个数据库连接上postgresql,不执行的话会报错数据库找不到
createdb
连接postgresql,不指定用户名和数据库默认是当前登陆系统账号同名的用户与数据库
psql
创建用户
CREATE USER postgres WITH PASSWORD '123456';
删除默认生成的postgresql
DROP DATABASE postgres;
创建属于postgres用户的数据库,注意:这里创建数据库时后面还跟了owner postgres,并在之后将数据库的权限都赋给该用户了,这样该用户才能自由的操作该数据库
CREATE DATABASE postgres OWNER postgres;
将所有权限赋给postgres
GRANT ALL PRIVILEGES ON DATABASE postgres to postgres;
给postgres用户添加创建数据库的属性
ALTER ROLE postgres CREATEDB;
之后就可以用postgres用户来创建并管理其他数据库了。
注意:这里创建 创建项目中需要用到的数据库,注意赋权属于postgres,不然后面会出现权限问题
create database xxx encoding='UTF8' OWNER postgres;
GRANT ALL PRIVILEGES ON DATABASE xxx to postgres;
创建schema 先登录psql,然后执行创建语句 psql [账号,不指定默认与系统用户同名] [数据库,不指定默认与账号同名]
psql postgres xxx
# 创建schema,这里如果报错没有权限就是之前的权限设置没有成功
create schema yyy;
# 如果涉及 多数据库需要切换的可以使用如下命令
\c database_name;
导入数据
psql -U postgres xxx < /Library/project/work/java/xxx/xxx20201205.sql
这里如果报错没有权限访问schema那就是schema没有赋权 给schema赋权 登陆该数据库之后执行命令
grant ALL PRIVILEGES ON SCHEMA yyye to postgres;
然后在导入即可
导出数据 参考:postgresql导出数据
参考安装过程基本参考该博客,只加入一些自己遇到的问题与办法 【1】https://www.cnblogs.com/eternityz/p/13529252.html