PostgreSQL-PgSQL-ubuntu乌班图安装psql10和timescaledb时序数据库扩展
1. 安装psql10
注意其他版本的包库里基本没有,按官方的文档操作也不行,另一种可能方案要用源码执行makeinstall编译安装。
关于root、ubuntu及后面生成的postgres用户名密码的重置逻辑
从ubuntu账号sudo -i -u postgres进入到postgres账号下,想要切换到root下,先执行exit,回到ubuntu,再执行sudo -i进入root
重置系统账号密码:
先su root(需要先重置下)
passwd ubuntu
passwd postgres
重置数据库账号密码:
先su root
再su postgres
psql
\password postgres
这里收入密码
\q 退出
整体教程:
https://blog.csdn.net/u011376317/article/details/145682298
1.1 整体步骤
sudo apt update【只执行1次,有问题也不要做什么调整】
被mysql卡主,就执行sudo systemctl stop mysql
sudo apt install postgresql-10 postgresql-contrib-10
或者,最新的好像就是10
sudo apt install postgresql postgresql-contrib
遇到mysql的安装问题就Ctrl C,会跳过
如果要把数据盘放在非系统盘上(【未测试】如果软件安装位置也要移动的话,要从源码包开始编译)
以下过程会重置数据库postgres的用户密码、数据库配置设置、数据库数据
df -h
挂载点为 / 的那一行,这就是你的系统盘【基本就是选择1个空间大的路径,要用mounted on 下的路径名,不要fileSystem】
sudo mkdir -p /mnt/pgdata/pgdata10
sudo chown -R postgres:postgres /mnt/pgdata/pgdata10
sudo chmod 700 /mnt/pgdata/pgdata10
sudo -u postgres /usr/lib/postgresql/10/bin/initdb -D /mnt/pgdata/pgdata10
su postgres【这里用su root, passwd postgres修改密码】
或者 sudo -i -u postgres(不要密码,另外sudo -i 是到root下)
//应该是错误的 这里已经不生效了。vi /etc/postgresql/10/main/postgresql.conf
// data_directory = '/mnt/pgdata/pgdata10' 大约第41行
【关键】
【先安转timescaledb,再和这里一步到位修改】
/mnt/pgdata/pgdata10这个文件夹下有postgresql.conf、pg_hba.conf,在这里的位置的文件中分别设置data_directory45应该会默认当前盘+listen_addresses 59+shared_preload_libraries 145、IPv4。
vi /mnt/pgdata/pgdata10/postgresql.conf 、pg_hba.conf
systemctl start postgresql
systemctl restart postgresql
systemctl enable postgresql 开机启动
systemctl status postgresql
验证数据库盘文件夹大小
cd /mnt/pgdata/pgdata10/
建表前后
du ./base/ 文件夹大小 (最下面的是总和)或 du -s ./base/ 或 du -sh ./base/ (分别是求和,求和并按M单位显示)
7484 ./base/13017
7484 ./base/13016
7484 ./base/1
22456 ./base/
直接写入15w条
DO $$
DECLARE
i INT;
BEGIN
FOR i IN 1..150000 LOOP
INSERT INTO test_conditions (time, location, temperature, humidity)
VALUES ('2025-03-20 17:39:11+08', '1', '2', '3');
END LOOP;
END $$;
SHOW data_directory; 直接查看数据盘
开始重置密码
sudo su postgres
psql 进入命令行
设置密码:
#】ALTER USER postgres PASSWORD '你的新密码'; 必须要;结尾
应该用
\password postgres
收入密码后
\q 退出
【重要】
ps -ef | grep postgres 能看到实际的配置的,就是默认的配置还是读取的老的,反正两个都改下
/usr/lib/postgresql/10/bin/postgres -D /userdata/pgdata10 -c config_file=/etc/postgresql/10/main/postgresql.conf
设置所有的ip可访问
vi /etc/postgresql/10/main/postgresql.conf
和 vi /mnt/pgdata/pgdata10/postgresql.conf【也要改,应该默认都是读取老路径配置,反正都改下】
放开下面的配置,并修改为*,大约在59行,
显示行号 :set number
listen_addresses = '*'
vi /etc/postgresql/10/main/pg_hba.conf
或 vi /mnt/pgdata/pgdata10/pg_hba.conf【看是否移动了数据盘】
在
==IPv4 local connections:==
下面的网段ADDRESS改成0.0.0.0/0
注意,并不是文件的末尾。
重启psql
systemctl restart postgresql
systemctl enable postgresql
虚入 ubuntu用户名的密码
验证上面的密码和ip访问问题:
su postgres
//验证 密码
psql -h 127.0.0.1 -p 5432 -U postgres
//验证 IP
psql -h 192.168.137.116 -p 5432 -U postgres
如果这里提示密码不对或Connection refused,就是端口不同,用telnet验证。
sudo ss -tuln | grep 5432 确认当前端口的可允许ip来源,需要变成 0.0.0.0:5432
tcp LISTEN 0 0 127.0.0.1:5432 0.0.0.0:*
tcp LISTEN 0 0 [::1]:5432 *:*
这里的127.0.0.1:5432表示,只接受本地连接,说明修改的配置没生效。
新老配置的都改下,包括data_directory,再重启,实际看ps -ef | grep postgres 来看还是使用老的配置文件路径。
2. 安装timescaledb扩展
整体参考
https://blog.csdn.net/qq_36357820/article/details/103386892
https://docs.timescale.com/v1.3/getting-started/installation
2.1 整体步骤
//git clone https://github.com/timescale/timescaledb.git
apt-get install cmake
好像又没有1.3.2版本
git clone --branch 1.3.x https://gitee.com/inlench/timescaledb
cd timescaledb
git checkout 1.3.2 必要
git branch
下一步./bootstrap 如果有报错,
sudo apt-get install libpq-dev
sudo apt-get install libssl-dev
开始执行安转
./bootstrap
下一步make如果出错 fatal error: postgres.h: No such file or directory;
sudo apt-get install postgresql-server-dev-10
这一步如果提示存在源之类的问题,可以尝试
重命名那个报错的源文件 或尝试:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
cd build && make
make install
然后修改psql的配置
su postgres 或者 sudo -i -u postgres(不要密码,另外sudo -i 是到root下)
vi /etc/postgresql/10/main/postgresql.conf
或 vi /mnt/pgdata/pgdata10/postgresql.conf 【看是否移动了数据盘】
找到并修改,可用/ 和 :set number配合找到:大约145行
shared_preload_libraries = 'timescaledb'
最后重启psql
systemctl restart postgresql
systemctl enable postgresql 【开机启动】
如果出现
问题1:
Using pg_config /usr/bin/pg_config
You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application.
-- Compiling against PostgreSQL version .
CMake Error at CMakeLists.txt:173 (message):
sudo apt-get install libpq-dev
问题2:
-- Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY OPENSSL_INCLUDE_DIR)
CMake Error at CMakeLists.txt:303 (message):
TimescaleDB requires OpenSSL but it wasn't found. If you want to continue
without OpenSSL, re-run bootstrap with `-DUSE_OPENSSL=0`
sudo apt-get install libssl-dev
3. 测试
默认的db就是public
//如果需要新建
CREATE database tutorial;
//进入
\c tutorial
创建扩展
CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;
验证
SELECT * FROM pg_extension WHERE extname = 'timescaledb';
CREATE TABLE test_conditions (
time TIMESTAMPTZ NOT NULL,
location TEXT NOT NULL,
temperature DOUBLE PRECISION NULL,
humidity DOUBLE PRECISION NULL
);
INSERT INTO test_conditions (time, location, temperature, humidity) VALUES ('2025-03-18 17:39:11+08', '1', '2', '3');
INSERT INTO test_conditions (time, location, temperature, humidity) VALUES ('2025-03-19 17:39:11+08', '1', '2', '3');
INSERT INTO test_conditions (time, location, temperature, humidity) VALUES ('2025-03-20 17:39:11+08', '1', '2', '3');
SELECT * from test_conditions;
-- 删除超表,先备份数据 DROP TABLE test_conditions CASCADE;
select create_hypertable('test_conditions', 'time', chunk_time_interval=> interval '1 seconds', associated_table_prefix=>'_test_conditions', migrate_data => true);
执行删除
select drop_chunks(interval '5 seconds', 'test_conditions');
正文到此结束
- 本文标签: Linux PostgreSQL 乌班图
- 本文链接: https://code.jiangjiesheng.cn/article/359
- 版权声明: 本文由小江同学原创发布,转载请先联系本站长,谢谢。