linux 安装 pgsql 以及 pgvector
- 我用的是虚拟机 -> 切换数据源
//备份
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
//切换阿里云数据源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
//清理缓存
sudo yum clean all
sudo yum makecache
//验证新源是否可用
sudo yum repolist
//示例
提示中如果显示的是你切换的数据源,即成功了
- 下载pgsql
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
sudo yum install -y postgresql15-server
sudo /usr/pgsql-15/bin/postgresql-15-setup initdb
sudo systemctl enable postgresql-15
sudo systemctl start postgresql-15
ps:start的时候注意看日志,如果出现了日志(包含error的时候代表启动失败了,就先别执行下去了,去看日志)
日志位置是:/var/lib/pgsql/15/data/log
我遇到的报错是:
2024-11-06 13:55:56.621 CST [6292] 日志: 正在监听IPv6地址"::1",端口 5432
2024-11-06 13:55:56.621 CST [6292] 日志: 正在监听IPv4地址"127.0.0.1",端口 5432
2024-11-06 13:55:56.634 CST [6292] 日志: 在Unix套接字 "/run/postgresql/.s.PGSQL.5432"上侦听
2024-11-06 13:55:56.648 CST [6292] 致命错误: 无法打开锁文件 "/tmp/.s.PGSQL.5432.lock": 权限不够
2024-11-06 13:55:56.652 CST [6292] 日志: 数据库系统已关闭
解决办法:
修改权限
sudo chmod 1777 /tmp
1777权限表示所有用户都可以读、写和执行,并且设置了粘滞位(sticky bit),防止用户删除其他用户的文件。
删除该锁文件
sudo rm /tmp/.s.PGSQL.5432.lock
然后重启
sudo systemctl start postgresql-15
//其他命令,不用执行
sudo systemctl status postgresql-15
sudo systemctl stop postgresql-15
sudo systemctl restart postgresql-15
- 安装完成后,登录数据库
su - postgres
//进入pgsql命令行
psql
//修改pgsql密码
ALTER USER postgres WITH PASSWORD 'qwer@1234'
//修改linux密码
sudo passwd -d postgres
sudo -u postgres passwd
- 下载pgvector
创建用户
CREATE USER test1 WITH PASSWORD '123456';
ALTER USER test1 WITH PASSWORD '123456'
创建数据库
CREATE DATABASE vectdb OWNER test1;
赋权
GRANT ALL PRIVILEGES ON DATABASE vectdb TO test1;
添加 superuser 权限,用于安装 pgvector 插件
alter user test1 with superuser;
本地登录
psql -U test1 -h localhost -p 5432 -d vectdb
创建插件
CREATE EXTENSION vector;
创建一个带有向量类型的表
CREATE TABLE items (id bigserial PRIMARY KEY, embedding vector(3));
写入一条数据
INSERT INTO items (embedding) VALUES ('[1,2,3]'), ('[4,5,6]');
向量检索
SELECT * FROM items ORDER BY embedding <-> '[3,1,2]' LIMIT 5;
配置PostgreSQL 外网访问
cd /var/lib/pgsql/15/data/
vim postgresql.conf#将监听地址修改为*,默认listen_addresses配置是注释掉的,所以可以直接在配置文件开头加入该行
listen_addresses='*'
vim pg_hba.conf在文件尾部加入,注意,开启所有外网都能访问时,服务容易被攻击
host all all 0.0.0.0/0 md5
重启PostgreSQL服务
sudo systemctl restart postgresql-15
#查看所有数据库
\l
#切换当前数据库
\c vectdb
#查看当前数据库下所有表
\d
#退出数据库
\q
查询配置文件所在位置
show config_file;
查询数据储存目录
show data_directory;