1、下载安装包
下载地址
2、上传安装包到服务器上
3、解压安装包
tar -xvzf postgresql-10.1-1-linux-x64-binaries.tar.gz
解压出来之后目录为pgsql
4、移动解压文件到指定目录
在opt目录下创建一个pgsql的文件夹,将刚才解压的文件复制到这个目录下
现在pgsql的安装目录就是/opt/pgsql/pgsql
5、创建pgsql用户并设置密码
[root@localhost pgsql]# useradd postgres
[root@localhost pgsql]# passwd postgres
密码暂定123456
注意:这里设置密码是linux用户postgres的登录密码,不是pgsql服务器的密码。
6、创建数据目录
[root@localhost opt]# mkdir pgsql_data
8、然后切换到postgres用户来操作数据库,pgsql数据库就以postgres为默认用户。
[root@localhost opt]# su - postgres
9、配置环境变量,将pgsql的bin目录加至环境变量中,方便直接使用pgsql相关命令。
[postgres@localhost ~]$ vim /etc/profile
然后数据 i 进入编辑模式,在文件的最后一行加入pgsql的bin的目录
export PGDATA=/opt/pgsql/pgsql/bin
然后Esc,退出编辑模式
:wq # 保存并退出
如果出现下面的情况,说明当前用户没有权限,需要切换成root用户,然后再重新操作一遍即可。
然后刷新文件
source /etc/profile
10、初始化数据库
先切换成postgres用户
我现在已经进入到了/opt/pgsql/pgsql 的目录下了
然后执行初始化数据库的命令
[postgres@localhost pgsql]$ bin/initdb -D /opt/pgsql_data/
等待执行完毕,没什么问题就初始化成功了,会出现以上的提示,最后会出现这个命令,就是让你用这个命令就可以启动数据库了,下一步做启动的具体说明。
bin/pg_ctl -D /opt/pgsql_data/ -l logfile start
这里-l指定日志文件位置,这里直接输出当前目录下的logfile中,这个可以自己指定,这里-D指定数据目录,默认如果不加数据目录直接报错找不到,可以在环境变量配置文件中加入一行: export PGDATA=/opt/pgsql_data 然后source刷新即可,这样pgsql会自动去找PGDATA环境变量值,找不到才会报错。
11、启动数据库
bin/pg_ctl -D /opt/pgsql_data/ -l logfile start
启动的时候如果报下面这个错误,说明权限不够,
执行这个命令进行赋权,注意要在root的用户下操作。
[root@localhost opt]# chmod -R 777 pgsql
然后再次执行启动的命令,ok,数据库启动成功。
执行查看进程的命令查看
[postgres@localhost pgsql]$ ps -ef | grep postgres
就可以看到相关进程如下:
pgsql默认的端口号为5432,通过netstat命令或者lsof命令都可以看到监听情况:
[postgres@localhost pgsql]$ lsof -i:5432
[postgres@localhost pgsql]$ netstat -an | grep 5432
现在可以看到pgsql默认监听的是localhost或127.0.0.1,目前只能本机访问,如果远程访问就连接不上了,具体的配置文件是data目录下的postgresql.conf,可以通过修改这个配置文件来调整各个参数,比如:listen_addresses可以修改绑定的地址,默认是localhost,port可以修改监听的端口号,默认是5432,max_connections可以修改最大客户端连接数量,默认是100等等。
停止postgresql的命令为:
/opt/pgsql/pgsql/bin/pg_ctl -D /opt/pgsql_data/ stop
12、配置远程连接的操作
使用命令
find / -name postgresql.conf
找到 postgresql.conf
[postgres@localhost pgsql_data]$ vim postgresql.conf
然后再数据命令
/listen_addresses
查找listen_addresses所在位置
修改参数:
修改pg_hba.conf文件的内容:
[postgres@localhost pgsql_data]$ vim pg_hba.conf
可访问的用户ip段
在文件末尾加入:
host all all 0.0.0.0/0 md5
然后再重新启动数据库使之生效即可。
停止postgresql的命令为:
/opt/pgsql/pgsql/bin/pg_ctl -D /opt/pgsql_data/ stop
启动postgresql的命令为:
/opt/pgsql/pgsql/bin/pg_ctl -D /opt/pgsql_data/ -l logfile start
查看进程
ps -ef | grep postgres
将端口添加到防火墙
firewall-cmd --permanent --add-port=5432/tcp
重启防火墙
systemctl restart firewalld
13、命令行界面简单操作
pgsql和mysql一样可以通过交互式提示符连接操作,连接方式如下:
/opt/pgsql/pgsql/bin/psql -h 127.0.0.1 -d postgres -U postgres -p 5432
其中-h参数指定服务器地址,默认为127.0.0.1,默认不指定即可,-d指定连接之后选中的数据库,默认也是postgres,-U指定用户,默认是当前用户,-p 指定端口号,默认是"5432",其它更多的参数选项可以执行: ./bin/psql --help 查看
登录进去默认界面如下所示:
命令提示符前面的就是当前的数据库,使用 \l 查看当前的数据库列表
默认postgres,template0和1这3个库是不允许操作的,创建新的数据库执行:
CREATE DATABASE test WITH OWNER=postgres ENCODING='UTF-8';
这样就创建好了数据库test,然后可以执行命令:
\c test
切换当前数据库为test,然后执行
\d
可以查看当前数据库下的所有表:
创建一个简单的数据表可以执行下面的命令:
创建表之后可以使用
\d student;
查看表的详细信息,如下:
现在可以插入一条测试数据:
INSERT INTO student (id, name, number) VALUES (1, ‘张三’, ‘1023’);
然后可以查询这条数据:
SELECT * FROM student WHERE id=1;
最后可以执行
\q
退出交互式界面
14、如果远程连接报错:
FATAL: password authentication failed for user “连接用户名”
解决方法
1、编辑pg_hba.conf,将md5认证修改成trust认证,编辑后退出保存
进入pgsql_data目录,然后编辑pg_hba.conf文件
2、执行pg_ctl reload加载生效,要进入bin目录下,再执行重新加载的命令
3、psql连接,用alter role修改密码
4、退出psql
5、编辑pg_hba.conf,将turst认证修改成md5认证,编辑后退出保存
6、执行pg_ctl reload加载生效
以上就是安装的详细步骤,以及我安装中出现的问题和解决的方案,希望能够帮助你们。