PostgreSQL搭建记录
介绍
- 这学期的数据库课程要求使用
PostgreSQL
作为学习使用的数据库工具。 - 所以今天尝试着安装了一下
PostgreSQL
,出了一些问题,在此做一个记录。
环境
Windows
安装
-
目前
Windows
版本已经更新到了13
,不过老师要求的也就是10
。 -
这里我选择了
10.16
、11.11
、13.2
(官网提供的几个版本)分别尝试安装。 -
结果以上版本在安装时都出现了同一个问题。
-
上网搜索过后,大致给出了三种可能:
- 路径中包含中文(然而我并没有)。
- 权限不够(管理员打开也不行)。
- 之前安装过的
Temp
文件冲突。
-
结合以上的问题,总结了一下解决过程:
-
先到对应路径下,把
Temp
文件夹中所有postgresql_install
的文件夹删除(需要管理员权限)。 -
删除后保证用户名不包含中文,即可正常安装。
-
安装到选择目录时,如果你曾尝试在此目录安装,可能出现
the choosen installation directory exists and is non-empty.please choose a different directory
-
把此目录删除后新建即可。
Linux
-
-
Windows
安装虽然简便,但是一个简单的步骤出了很多莫名的问题。 -
与此同时我在
Ubuntu
安装了一个Linux
版本的PostgreSQL
。 -
在
Linux
中,PostgreSQL
和pgAdmin4
没有捆绑,需要后期建立连接。安装
-
这里参考了一下官方的方法,下面相当于对方法的翻译和总结吧。
-
更新系统软件包
sudo apt update
- 直接在库中安装最新的
PostgreSQL
sudo apt install postgresql
默认的
data
文件夹在/var/lib/postgresql/12/main
下,配置文件在/etc/postgresql/12/main
。
- 添加存储库的公共密钥并创建存储库配置文件
curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add
sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'
由于
Ubuntu
库中没有pgAdmin4
,只能通过pgAdmin4 APT
仓库安装。
- 安装
pgAdmin4
sudo apt install pgadmin4
检查
- 安装完成后,检查
PostgreSQL
状态
sudo systemctl is-active postgresql
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql
- 确认
PostgreSQL server
的状态
sudo pg_isready
配置
- 切换用户到
postgres
进行登录
sudo su - postgres
psql
出现了
postgres=#
即成功登入
- 创建数据库用户和数据库并授权(这里的参数需要自定义)
CREATE USER {USER_NAME} WITH PASSWORD {USER_PASSWD};
CREATE DATABASE {DATABASE_NAME};
GRANT ALL PRIVILEGES ON DATABASE {DATABASE_NAME} to {USER_NAME};
- 远程控制配置
sudo vim /etc/postgresql/12/main/pg_hba.conf
- 配置完成后重启服务
sudo systemctl restart postgresql
- 运行
pgdmin4
二进制软件包附带的Web
设置脚本,以配置系统以Web
模式运行
sudo /usr/pgadmin4/bin/setup-web.sh
- 填入你的邮箱和设置的密码,方便以后登录。
- 打开下列连接进入
pgAdmin4
(SERVER_IP
需要换成你服务器的ip
)
http://SERVER_IP/pgadmin4
-
使用你刚刚设置的邮箱和密码登录。
-
连接新的服务器,点击
Add New Server
。 -
General
填写Name
即可 -
在
Connection
填写Host name/address
为你的服务器地址,Username
改为你之前创建的数据库用户。