0%

安装

我用的 Manjaro ,安装特别简单pacman -S postgresql就好了。

pgAdmin安装也是一条命令pacman -S pgadmin4

也可以查看一下版本pacman -Ss |grep pgadmin

下面是 Centos7 安装

postgres有些人估计都没有听说过,没关系,可以百度自己了解一下,这里说一下Centos7.6_1810版本的安装(目前的最新版)

查询有没有安装

1
rpm -qa|grep postgre

查询postgre的yum源

1
yum list |grep postgre

下载地址:https://www.postgresql.org/download/linux/redhat/

一、yum安装

点开下载网址,安装姿势有了。直接看(三、通用操作)

yum安装已经在/usr/bin中添加了链接,可以执行postgre的命令。

安装之后的路径是:/var/lib/pgsql/10/data/

1
2
3
4
5
6
7
8
9
10
# Install the repository RPM:
yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
yum install postgresql12-server

# Optionally initialize the database and enable automatic start:
/usr/pgsql-12/bin/postgresql-12-setup initdb
systemctl enable postgresql-12
systemctl start postgresql-12

查看安装的配置路径

1
2
su postgres
psql -U postgres -c 'SHOW config_file'

二、解压安装

1 下载源代码并解压
1
2
3
4
5
wget https://ftp.postgresql.org/pub/source/v11.0/postgresql-11.0.tar.gz
tar -xvzf postgresql-11.0.tar.gz #解压pg包,并到安装目录
./configure
sudo make
sudo make install

如果编译过程中遇到问题,比如缺少GCC、readline、zlib等,安装方式都是:

1
2
3
yum list |grep xxx
yum install -y xxxx
yum install -y xxxx-dev*
2 创建用户组和用户
1
2
3
groupadd postgres    #新增用户组
useradd -g postgres postgres #新增用户
passwd postgres #为用户设置密码
3 创建数据目录
1
2
3
 mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data #设置data文件加属性
chmod 700 /usr/local/pgsql/data #设置data文件夹权限
4 数据库操作
1
2
3
4
5
6
su postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data #初始化数据库
cd /usr/local/pgsql/bin/ & ./pg_ctl [start | stop | restart] -D /usr/local/pgsql/data/ #启动\停止\重启数据库
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 & #设置日志输出位置
/usr/local/pgsql/bin/createdb test #创建测试数据库
5. /usr/local/pgsql/bin/psql test #启动测试数据库

三、通用操作

修改密码

yum安装postgresql,默认会建一个名为”postgres”的系统账号,用于执行PostgreSQL;

1
su - postgres

切换用户后,提示符变更为“-bash-4.2$”; #同时数据库中也会生成一个名为”postgres”的数据库用户,且密码已自动生成;

PostgreSQL在数据库用户同名的系统账号下登录免密;进入数据库后修改密码;

1
2
 -bash-4.2$  psql -U postgres
postgres=# alter user postgres with password 'postgres@123'
配置文件中,添加访问(/usr/local/pgsql/data/postgresql.conf)

修改listen_addresses = ‘localhost’为listen_addresses = ‘*’,允许所有远程访问;

修改配置文件需要重启服务。

手动修改的时候,可能配置文件会有点长,在命令行模式下输入/listen_addresses 回车,就可以找到了。

1
[root@p~]# sed -i "s|#listen_addresses = 'localhost'|listen_addresses = '*'|g" /var/lib/pgsql/10/data/postgre
修改data/pg_hba.conf

trust的意思是用账户密码登录。

1
2
3
4
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 0.0.0.0/0 md5

四、防火墙操作

1
2
3
4
5
6
7
8
9
10
11
1. 查看防火墙是否关闭:firewall-cmd --state
2. 启动服务:systemctl start firewalld.service
3. 关闭服务:systemctl stop firewalld.service
4. 重启服务:systemctl restart firewalld.service
5. 显示服务的状态:systemctl status firewalld.service
6. 在开机时启用服务:systemctl enable firewalld.service
7. 在开机时禁用服务:systemctl disable firewalld.service
8. 查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
9. 查看已启动的服务列表:systemctl list-unit-files|grep enabled
10. 添加开发端口:firewall-cmd --zone=public --add-port=5432/tcp --permanent
11. 重新加载防火墙:firewall-cmd --reload

https://www.jianshu.com/p/ee4ee15d3658

五、安装pgdmin4 web客户端

(我刚开始装的时候找个资料真的难)

打开下载链接:https://www.postgresql.org/ftp/

或者https://www.pgadmin.org/download/pgadmin-4-rpm/

建议直接选择rpm安装,简单省事。

1
yum list |grep pgadmin4

因为我用过web,也不知道安装哪一个,干脆装个web(然后就装了好大一堆东西,一大堆pgadmini4的python依赖)。

1
yum install -y  pgadmin4-web.noarch

安装之后的路径在:/usr/lib/python2.7/site-packages/pgadmin4-web/ 打开pgadmin4

1
2
cd /usr/lib/python2.7/site-packages/pgadmin4-web/
python pgAdmin4.py

初次配置pgadmin4:设置邮箱/密码(登录用)
访问pgadmin4:http://localhost:5050

启动很麻烦?写个脚本就好了

(脚本能用!想关闭的话,ps -ef |grep pgadmin4 kill -9 +上面列出的第一个数字)

1
2
3
4
5
6
7
8
9
10
11
cd /usr/lib/python2.7/site-packages/pgadmin4-web/
vim pgadmin4.sh
#添加如下内容
#执行 i
#!/bin/bash
nohup python /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.py &
#执行esc
#执行:wq!
chmod 777 pgadmin4.sh
ln -s /usr/lib/python2.7/site-packages/pgadmin4-web/pgadmin4.sh /usr/local/bin/pgadmin4
#执行pgadmin4 就会启动web客户端

命令行登录

1
$ psql -U dbuser -d exampledb

登录后的权限操作参考
https://blog.csdn.net/u010166404/article/details/53188882
其实很多初学者也不一定看的懂。。

1
2
3
4
5
6
7
8
9
10
11
-- 连接命令(最后加上<filepath  就是还原命令,最后说)
-- 用户U大写
psql -h 127.0.0.1 -p 5432 -U user_name -d db_name
-- 创建用户的示例
CREATE USER userName WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT REPLICATION CONNECTION LIMIT -1 password 'pwd';
-- 创建超级用户
CREATE USER userName WITH SUPERMAN password 'pwd';
-- 创建模式,并分配给userName用户
CREATE SCHEMA schemaName authorization userName;
-- 更改权限
ALTER ROLE name SET enable_indexscan TO off;

常用的控制台命令

1
2
3
4
5
6
7
8
9
10
\password           设置密码
\q 退出
\h 查看SQL命令的解释,比如\h select
\? 查看psql命令列表
\l 列出所有数据库
\c [database_name] 连接其他数据库
\d 列出当前数据库的所有表格
\d [table_name] 列出某一张表格的结构
\x 对数据做展开操作
\du 列出所有用户

常用的SQL语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 创建新表
CREATE TABLE table_name(name VARCHAR(20), birth DATE);
# 插入数据
INSERT INTO table_name(name, birth) VALUES('欧文', '1994-08-23');
# 查询记录
SELECT * FROM table_name;
# 更新数据
UPDATE table_name set name = '勒夫' WHERE name = '欧文';
# 删除记录
DELETE FROM table_name WHERE name = '欧文' ;
# 添加字段
ALTER TABLE table_name ADD email VARCHAR(40);
# 更改字段类型
ALTER TABLE table_name ALTER COLUMN birth SET NOT NULL;
# 设置字段默认值(注意字符串使用单引号)
ALTER TABLE table_name ALTER COLUMN email SET DEFAULT 'example@example.com';
# 去除字段默认值
ALTER TABLE table_name ALTER email DROP DEFAULT;
# 重命名字段
ALTER TABLE table_name RENAME COLUMN birth TO birthday;
# 删除字段
ALTER TABLE table_name DROP COLUMN email;
# 表重命名
ALTER TABLE table_name RENAME TO backup_table;
# 删除表
DROP TABLE IF EXISTS backup_table;
# 删除库
\c postgres;
DROP DATABASE IF EXISTS hello;

备份和恢复

1
2
$ pg_dump --format=t -d db_name -U user_name -h 127.0.0.1 -O -W  > dump.sql
$ psql -h 127.0.0.1 -U user_name -d db_name < dump.sql

分布式事物

XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos。

如果PostgreSQL参与分布式事务(XA)处理,则需要在配置文件postgres.conf中设置参数,此参数用于指定分布式事务中两步提交准备事务的最大数量。默认值为0,此时不支持分布式事务。

max_prepared_transactions参数值不应该小于max_connections参数值,这样每一个session都可以至少有一个可用的准备事务。

1
2
max_connections = 100
max_prepared_transactions = 100

本文地址:https://www.jianshu.com/p/80b690597541

本文地址: https://github.com/maxzhao-it/blog/post/32517/

安装

我用的 Manjaro ,安装特别简单pacman -S postgresql就好了。

pgAdmin安装也是一条命令pacman -S pgadmin4

也可以查看一下版本pacman -Ss |grep pgadmin

下面是 Centos7 安装

postgres有些人估计都没有听说过,没关系,可以百度自己了解一下,这里说一下Centos7.6_1810版本的安装(目前的最新版)

查询有没有安装

1
rpm -qa|grep postgre

查询postgre的yum源

1
yum list |grep postgre

下载地址:https://www.postgresql.org/download/linux/redhat/

一、yum安装

点开下载网址,安装姿势有了。直接看(三、通用操作)

yum安装已经在/usr/bin中添加了链接,可以执行postgre的命令。

安装之后的路径是:/var/lib/pgsql/10/data/

二、解压安装

1 下载源代码并解压
1
2
3
4
5
wget https://ftp.postgresql.org/pub/source/v11.0/postgresql-11.0.tar.gz
tar -xvzf postgresql-11.0.tar.gz #解压pg包,并到安装目录
./configure
sudo make
sudo make install

如果编译过程中遇到问题,比如缺少GCC、readline、zlib等,安装方式都是:

1
2
3
yum list |grep xxx
yum install -y xxxx
yum install -y xxxx-dev*
2 创建用户组和用户
1
2
3
groupadd postgres    #新增用户组
useradd -g postgres postgres #新增用户
passwd postgres #为用户设置密码
3 创建数据目录
1
2
3
 mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data #设置data文件加属性
chmod 700 /usr/local/pgsql/data #设置data文件夹权限
4 数据库操作
1
2
3
4
5
6
su postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data #初始化数据库
cd /usr/local/pgsql/bin/ & ./pg_ctl [start | stop | restart] -D /usr/local/pgsql/data/ #启动\停止\重启数据库
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 & #设置日志输出位置
/usr/local/pgsql/bin/createdb test #创建测试数据库
5. /usr/local/pgsql/bin/psql test #启动测试数据库

三、通用操作

修改密码

yum安装postgresql,默认会建一个名为”postgres”的系统账号,用于执行PostgreSQL;

1
su - postgres

切换用户后,提示符变更为“-bash-4.2$”; #同时数据库中也会生成一个名为”postgres”的数据库用户,且密码已自动生成; PostgreSQL在数据库用户同名的系统账号下登录免密;进入数据库后修改密码;

1
2
3
 -bash-4.2$  psql -U postgres
postgres=# alter user postgres with password 'maxzhao'
postgres=#\password
配置文件中,添加访问(/usr/local/pgsql/data/postgresql.conf)

修改listen_addresses = ‘localhost’为listen_addresses = ‘*’,允许所有远程访问;

修改配置文件需要重启服务。

手动修改的时候,可能配置文件会有点长,在命令行模式下输入/listen_addresses 回车,就可以找到了。

1
[root@p~]# sed -i "s|#listen_addresses = 'localhost'|listen_addresses = '*'|g" /var/lib/pgsql/10/data/postgre
修改data/pg_hba.conf

trust的意思是用账户密码登录。

1
2
3
4
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 0.0.0.0/0 md5

四、防火墙操作

1
2
3
4
5
6
7
8
9
10
11
1. 查看防火墙是否关闭:firewall-cmd --state
2. 启动服务:systemctl start firewalld.service
3. 关闭服务:systemctl stop firewalld.service
4. 重启服务:systemctl restart firewalld.service
5. 显示服务的状态:systemctl status firewalld.service
6. 在开机时启用服务:systemctl enable firewalld.service
7. 在开机时禁用服务:systemctl disable firewalld.service
8. 查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
9. 查看已启动的服务列表:systemctl list-unit-files|grep enabled
10. 添加开发端口:firewall-cmd --zone=public --add-port=5432/tcp --permanent
11. 重新加载防火墙:firewall-cmd --reload

https://www.jianshu.com/p/ee4ee15d3658

五、安装pgdmin4 web客户端

(我刚开始装的时候找个资料真的难)

打开下载链接:https://www.postgresql.org/ftp/

或者https://www.pgadmin.org/download/pgadmin-4-rpm/

建议直接选择rpm安装,简单省事。

1
yum list |grep pgadmin4

因为我用过web,也不知道安装哪一个,干脆装个web(然后就装了好大一堆东西,一大堆pgadmini4的python依赖)。

1
yum install -y  pgadmin4-web.noarch

安装之后的路径在:/usr/lib/python2.7/site-packages/pgadmin4-web/

打开pgadmin4

1
2
cd /usr/lib/python2.7/site-packages/pgadmin4-web/
python pgAdmin4.py

初次配置pgadmin4:设置邮箱/密码(登录用)
访问pgadmin4:http://localhost:5050

启动很麻烦?写个脚本就好了

(脚本能用!想关闭的话,ps -ef |grep pgadmin4 kill -9 +上面列出的第一个数字)

1
2
3
4
5
6
7
8
9
10
11
cd /usr/lib/python2.7/site-packages/pgadmin4-web/
vim pgadmin4.sh
#添加如下内容
#执行 i
#!/bin/bash
nohup python /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.py &
#执行esc
#执行:wq!
chmod 777 pgadmin4.sh
ln -s /usr/lib/python2.7/site-packages/pgadmin4-web/pgadmin4.sh /usr/local/bin/pgadmin4
#执行pgadmin4 就会启动web客户端

命令行登录

1
$ psql -U dbuser -d exampledb

登录后的权限操作参考
https://blog.csdn.net/u010166404/article/details/53188882
其实很多初学者也不一定看的懂。。

1
2
3
4
5
6
7
8
9
10
11
-- 连接命令(最后加上<filepath  就是还原命令,最后说)
-- 用户U大写
psql -h 127.0.0.1 -p 5432 -U user_name -d db_name
-- 创建用户的示例
CREATE USER userName WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT REPLICATION CONNECTION LIMIT -1 password 'pwd';
-- 创建超级用户
CREATE USER userName WITH SUPERMAN password 'pwd';
-- 创建模式,并分配给userName用户
CREATE SCHEMA schemaName authorization userName;
-- 更改权限
ALTER ROLE name SET enable_indexscan TO off;

常用的控制台命令

1
2
3
4
5
6
7
8
9
10
\password           设置密码
\q 退出
\h 查看SQL命令的解释,比如\h select
\? 查看psql命令列表
\l 列出所有数据库
\c [database_name] 连接其他数据库
\d 列出当前数据库的所有表格
\d [table_name] 列出某一张表格的结构
\x 对数据做展开操作
\du 列出所有用户

常用的SQL语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 创建新表
CREATE TABLE table_name(name VARCHAR(20), birth DATE);
# 插入数据
INSERT INTO table_name(name, birth) VALUES('欧文', '1994-08-23');
# 查询记录
SELECT * FROM table_name;
# 更新数据
UPDATE table_name set name = '勒夫' WHERE name = '欧文';
# 删除记录
DELETE FROM table_name WHERE name = '欧文' ;
# 添加字段
ALTER TABLE table_name ADD email VARCHAR(40);
# 更改字段类型
ALTER TABLE table_name ALTER COLUMN birth SET NOT NULL;
# 设置字段默认值(注意字符串使用单引号)
ALTER TABLE table_name ALTER COLUMN email SET DEFAULT 'example@example.com';
# 去除字段默认值
ALTER TABLE table_name ALTER email DROP DEFAULT;
# 重命名字段
ALTER TABLE table_name RENAME COLUMN birth TO birthday;
# 删除字段
ALTER TABLE table_name DROP COLUMN email;
# 表重命名
ALTER TABLE table_name RENAME TO backup_table;
# 删除表
DROP TABLE IF EXISTS backup_table;
# 删除库
\c postgres;
DROP DATABASE IF EXISTS hello;

备份和恢复

1
2
$ pg_dump --format=t -d db_name -U user_name -h 127.0.0.1 -O -W  > dump.sql
$ psql -h 127.0.0.1 -U user_name -d db_name < dump.sql

分布式事物

XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos。

如果PostgreSQL参与分布式事务(XA)处理,则需要在配置文件postgres.conf中设置参数,此参数用于指定分布式事务中两步提交准备事务的最大数量。默认值为0,此时不支持分布式事务。

max_prepared_transactions参数值不应该小于max_connections参数值,这样每一个session都可以至少有一个可用的准备事务。

1
2
max_connections = 100
max_prepared_transactions = 100

本文地址:https://www.jianshu.com/p/80b690597541

本文地址: https://github.com/maxzhao-it/blog/post/32518/

安装

我用的 Manjaro ,安装特别简单pacman -S postgresql就好了。

pgAdmin安装也是一条命令pacman -S pgadmin4

也可以查看一下版本pacman -Ss |grep pgadmin

下面是 Centos7 安装

postgres有些人估计都没有听说过,没关系,可以百度自己了解一下,这里说一下Centos7.6_1810版本的安装(目前的最新版)

查询有没有安装

1
rpm -qa|grep postgre

查询postgre的yum源

1
yum list |grep postgre

下载地址:https://www.postgresql.org/download/linux/redhat/

下载地址也有安装方式

一、yum安装

点开下载网址,安装姿势有了。直接看(三、通用操作)

yum安装已经在/usr/bin中添加了链接,可以执行postgre的命令。

安装之后的路径是:/var/lib/pgsql/10/data/

1
2
3
4
5
6
7
8
9
10
# Install the repository RPM:
sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm

# Install PostgreSQL:
sudo yum install -y postgresql10-server

# Optionally initialize the database and enable automatic start:
sudo /usr/pgsql-10/bin/postgresql-10-setup initdb
sudo systemctl enable postgresql-10
sudo systemctl start postgresql-10

查看安装的配置路径

1
2
su postgres
psql -U postgres -c 'SHOW config_file'

二、解压安装

1 下载源代码并解压
1
2
3
4
5
wget https://ftp.postgresql.org/pub/source/v11.0/postgresql-11.0.tar.gz
tar -xvzf postgresql-11.0.tar.gz #解压pg包,并到安装目录
./configure
sudo make
sudo make install

如果编译过程中遇到问题,比如缺少GCC、readline、zlib等,安装方式都是:

1
2
3
yum list |grep xxx
yum install -y xxxx
yum install -y xxxx-dev*
2 创建用户组和用户
1
2
3
groupadd postgres    #新增用户组
useradd -g postgres postgres #新增用户
passwd postgres #为用户设置密码
3 创建数据目录
1
2
3
 mkdir /usr/local/pgsql/data
chown postgres /usr/local/pgsql/data #设置data文件加属性
chmod 700 /usr/local/pgsql/data #设置data文件夹权限
4 数据库操作
1
2
3
4
5
6
su postgres
/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data #初始化数据库
cd /usr/local/pgsql/bin/ & ./pg_ctl [start | stop | restart] -D /usr/local/pgsql/data/ #启动\停止\重启数据库
/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 & #设置日志输出位置
/usr/local/pgsql/bin/createdb test #创建测试数据库
5. /usr/local/pgsql/bin/psql test #启动测试数据库

三、通用操作

修改密码

yum安装postgresql,默认会建一个名为”postgres”的系统账号,用于执行PostgreSQL;

1
su - postgres

切换用户后,提示符变更为“-bash-4.2$”; #同时数据库中也会生成一个名为”postgres”的数据库用户,且密码已自动生成;

PostgreSQL在数据库用户同名的系统账号下登录免密;进入数据库后修改密码;

1
2
 -bash-4.2$  psql -U postgres
postgres=# alter user postgres with password 'maxzhao'
配置文件中,添加访问(/usr/local/pgsql/data/postgresql.conf

修改listen_addresses = ‘localhost’为listen_addresses = ‘*’,允许所有远程访问;

修改配置文件需要重启服务。

手动修改的时候,可能配置文件会有点长,在命令行模式下输入/listen_addresses 回车,就可以找到了。

1
sed -i "s|#listen_addresses = 'localhost'|listen_addresses = '*'|g" /var/lib/pgsql/10/data/postgre
修改data/pg_hba.conf

trust的意思是用账户密码登录。

1
2
3
4
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 0.0.0.0/0 md5

四、防火墙操作

1
2
3
4
5
6
7
8
9
10
11
1. 查看防火墙是否关闭:firewall-cmd --state
2. 启动服务:systemctl start firewalld.service
3. 关闭服务:systemctl stop firewalld.service
4. 重启服务:systemctl restart firewalld.service
5. 显示服务的状态:systemctl status firewalld.service
6. 在开机时启用服务:systemctl enable firewalld.service
7. 在开机时禁用服务:systemctl disable firewalld.service
8. 查看服务是否开机启动:systemctl is-enabled firewalld.service;echo $?
9. 查看已启动的服务列表:systemctl list-unit-files|grep enabled
10. 添加开发端口:firewall-cmd --zone=public --add-port=5432/tcp --permanent
11. 重新加载防火墙:firewall-cmd --reload

https://www.jianshu.com/p/ee4ee15d3658

五、安装pgdmin4 web客户端

(我刚开始装的时候找个资料真的难)

打开下载链接:https://www.postgresql.org/ftp/或者https://www.pgadmin.org/download/pgadmin-4-rpm/

建议直接选择rpm安装,简单省事。

1
yum list |grep pgadmin4

因为我用过web,也不知道安装哪一个,干脆装个web(然后就装了好大一堆东西,一大堆pgadmini4的python依赖)。

1
yum install -y  pgadmin4-web.noarch

安装之后的路径在:/usr/lib/python2.7/site-packages/pgadmin4-web/

打开pgadmin4

1
2
cd /usr/lib/python2.7/site-packages/pgadmin4-web/
python pgAdmin4.py

初次配置pgadmin4:设置邮箱/密码(登录用)
访问pgadmin4:http://localhost:5050

启动很麻烦?写个脚本就好了

(脚本能用!想关闭的话,ps -ef |grep pgadmin4 kill -9 +上面列出的第一个数字)

1
2
3
4
5
6
7
8
9
10
11
cd /usr/lib/python2.7/site-packages/pgadmin4-web/
vim pgadmin4.sh
#添加如下内容
#执行 i
#!/bin/bash
nohup python /usr/lib/python2.7/site-packages/pgadmin4-web/pgAdmin4.py &
#执行esc
#执行:wq!
chmod 777 pgadmin4.sh
ln -s /usr/lib/python2.7/site-packages/pgadmin4-web/pgadmin4.sh /usr/local/bin/pgadmin4
#执行pgadmin4 就会启动web客户端

命令行登录

1
$ psql -U dbuser -d exampledb

登录后的权限操作参考
https://blog.csdn.net/u010166404/article/details/53188882
其实很多初学者也不一定看的懂。。

1
2
3
4
5
6
7
8
9
10
11
-- 连接命令(最后加上<filepath  就是还原命令,最后说)
-- 用户U大写
psql -h 127.0.0.1 -p 5432 -U user_name -d db_name
-- 创建用户的示例
CREATE USER userName WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE INHERIT REPLICATION CONNECTION LIMIT -1 password 'pwd';
-- 创建超级用户
CREATE USER userName WITH SUPERMAN password 'pwd';
-- 创建模式,并分配给userName用户
CREATE SCHEMA schemaName authorization userName;
-- 更改权限
ALTER ROLE name SET enable_indexscan TO off;

常用的控制台命令

1
2
3
4
5
6
7
8
9
10
\password           设置密码
\q 退出
\h 查看SQL命令的解释,比如\h select
\? 查看psql命令列表
\l 列出所有数据库
\c [database_name] 连接其他数据库
\d 列出当前数据库的所有表格
\d [table_name] 列出某一张表格的结构
\x 对数据做展开操作
\du 列出所有用户

常用的SQL语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 创建新表
CREATE TABLE table_name(name VARCHAR(20), birth DATE);
# 插入数据
INSERT INTO table_name(name, birth) VALUES('欧文', '1994-08-23');
# 查询记录
SELECT * FROM table_name;
# 更新数据
UPDATE table_name set name = '勒夫' WHERE name = '欧文';
# 删除记录
DELETE FROM table_name WHERE name = '欧文' ;
# 添加字段
ALTER TABLE table_name ADD email VARCHAR(40);
# 更改字段类型
ALTER TABLE table_name ALTER COLUMN birth SET NOT NULL;
# 设置字段默认值(注意字符串使用单引号)
ALTER TABLE table_name ALTER COLUMN email SET DEFAULT 'example@example.com';
# 去除字段默认值
ALTER TABLE table_name ALTER email DROP DEFAULT;
# 重命名字段
ALTER TABLE table_name RENAME COLUMN birth TO birthday;
# 删除字段
ALTER TABLE table_name DROP COLUMN email;
# 表重命名
ALTER TABLE table_name RENAME TO backup_table;
# 删除表
DROP TABLE IF EXISTS backup_table;
# 删除库
\c postgres;
DROP DATABASE IF EXISTS hello;

备份和恢复

1
2
$ pg_dump --format=t -d db_name -U user_name -h 127.0.0.1 -O -W  > dump.sql
$ psql -h 127.0.0.1 -U user_name -d db_name < dump.sql

分布式事物

XA是open group提出的分布式事务处理规范,JTA支持XA规范,JTA只规定了接口,有些应用容器提供实现,也有一些三方的开源实现可用,比如Atomikos。

如果PostgreSQL参与分布式事务(XA)处理,则需要在配置文件postgres.conf中设置参数,此参数用于指定分布式事务中两步提交准备事务的最大数量。默认值为0,此时不支持分布式事务。

max_prepared_transactions参数值不应该小于max_connections参数值,这样每一个session都可以至少有一个可用的准备事务。

1
2
max_connections = 100
max_prepared_transactions = 100

本文地址 PostgreSql安装(Centos7)

本文地址: https://github.com/maxzhao-it/blog/post/9223/

PostgreSql日常操作记录(持续更新)

Arch 起飞&迫降

下载地址:https://www.postgresql.org/ftp/pgadmin/pgadmin4/v4.7/pip/

需要 python pip 环境 。

1
2
3
pip2 install pgadmin4-1.0-py2-none-any.whl
# 安装目录运行
python pgAdmin4.py

访问pgadmin:http://localhost:5050

安装phppgadmin

  1. https://wiki.archlinux.org/index.php/PhpPgAdmin#Installation
  2. pacman -S pgadmin4

基本命令

  • 查看编码:show client_encoding;
  • 设置查询默认schema命令: SET search_path TO myschema1.maxzhao;
  • 复制表:select * into maxzhao.temp_new from maxzhao.temp where 1<>1;
  • 复制表和数据:select * into maxzhao.temp_new from maxzhao.temp;
  • null转换:COALESCE(var,default),与 nvl 用法一样。

由于命令行不会快速搜索,所以拷贝了下来方便快速搜索。

帮助

  • ? [commands] 显示反斜线命令的帮助
  • ? options 显示 psql 命令行选项的帮助
  • ? variables 显示特殊变量的帮助
  • \h [名称] SQL命令语法上的说明,用*显示全部命令的语法说明

一般性

  • \copyright 显示PostgreSQL的使用和发行许可条款
  • \crosstabview [COLUMNS] 执行查询并且以交叉表显示结果
  • \errverbose 以最冗长的形式显示最近的错误消息
  • \g [文件] or; 执行查询 (并把结果写入文件或 |管道)
  • \gdesc describe result of query, without executing it
  • \gexec 执行策略,然后执行其结果中的每个值
  • \gset [PREFIX] 执行查询并把结果存到psql变量中
  • \gx [FILE] as \g, but forces expanded output mode
  • \q 退出 psql
  • \watch [SEC] 每隔SEC秒执行一次查询

查询缓存区

  • \e [FILE] [LINE] 使用外部编辑器编辑查询缓存区(或文件)
  • \ef [FUNCNAME [LINE]] 使用外部编辑器编辑函数定义
  • \ev [VIEWNAME [LINE]] 用外部编辑器编辑视图定义
  • \p 显示查询缓存区的内容
  • \r 重置(清除)查询缓存区
  • \s [文件] 显示历史记录或将历史记录保存在文件中
  • \w 文件 将查询缓存区的内容写入文件

输入/输出

  • \copy … 执行 SQL COPY,将数据流发送到客户端主机
  • \echo [字符串] 将字符串写到标准输出
  • \i 文件 从文件中执行命令
  • \ir FILE 与 \i类似, 但是相对于当前脚本的位置
  • \o [文件] 将全部查询结果写入文件或 |管道
  • \qecho [字符串] 将字符串写到查询输出串流(参考 \o)

Conditional

  • \if EXPR begin conditional block
  • \elif EXPR alternative within current conditional block
  • \else final alternative within current conditional block
  • \endif end conditional block

资讯性

  • (选项: S = 显示系统对象, + = 其余的详细信息)
  • \d[S+] 列出表,视图和序列
  • \d[S+] 名称 描述表,视图,序列,或索引
  • \da[S] [模式] 列出聚合函数
  • \dA[+] [PATTERN] list access methods
  • \db[+] [模式] 列出表空间
  • \dc[S+] [PATTERN] 列表转换
  • \dC[+] [PATTERN] 列出类型强制转换
  • \dd[S] [PATTERN] 显示没有在别处显示的对象描述
  • \dD[S+] [PATTERN] 列出共同值域
  • \ddp [模式] 列出默认权限
  • \dE[S+] [PATTERN] 列出引用表
  • \det[+] [PATTERN] 列出引用表
  • \des[+] [模式] 列出外部服务器
  • \deu[+] [模式] 列出用户映射
  • \dew[+] [模式] 列出外部数据封装器
  • \df[anptw][S+] [PATRN] list [only agg/normal/procedures/trigger/window] functi ons
  • \dF[+] [模式] 列出文本搜索配置
  • \dFd[+] [模式] 列出文本搜索字典
  • \dFp[+] [模式] 列出文本搜索解析器
  • \dFt[+] [模式] 列出文本搜索模版
  • \dg[S+] [PATTERN] 列出角色
  • \di[S+] [模式] 列出索引
  • \dl 列出大对象, 功能与\lo_list相同
  • \dL[S+] [PATTERN] 列出所有过程语言
  • \dm[S+] [PATTERN] 列出所有物化视图
  • \dn[S+] [PATTERN] 列出所有模式
  • \do[S] [模式] 列出运算符
  • \dO[S+] [PATTERN] 列出所有校对规则
  • \dp [模式] 列出表,视图和序列的访问权限
  • \drds [模式1 [模式2]] 列出每个数据库的角色设置
  • \dRp[+] [PATTERN] list replication publications
  • \dRs[+] [PATTERN] list replication subscriptions
  • \ds[S+] [模式] 列出序列
  • \dt[S+] [模式] 列出表
  • \dT[S+] [模式] 列出数据类型
  • \du[S+] [PATTERN] 列出角色
  • \dv[S+] [模式] 列出视图
  • \dx[+] [PATTERN] 列出扩展
  • \dy [PATTERN] 列出所有事件触发器
  • \l[+] [PATTERN] 列出所有数据库
  • \sf[+] FUNCNAME 显示一个函数的定义
  • \sv[+] VIEWNAME 显示一个视图的定义
  • \z [模式] 和\dp的功能相同

格式化

  • \a 在非对齐模式和对齐模式之间切换
  • \C [字符串] 设置表的标题,或如果没有的标题就取消
  • \f [字符串] 显示或设定非对齐模式查询输出的字段分隔符
  • \H 切换HTML输出模式 (目前是 关闭)
  • \pset [NAME [VALUE]] set table output option
    (NAME := {border|columns|expanded|fieldsep|fieldsep_zero| footer|format|linestyle|null|numericlocale|pager|
    pager_min_lines|recordsep|recordsep_zero|tableattr|title| tuples_only|unicode_border_linestyle|
    unicode_column_linestyle|unicode_header_linestyle})
  • \t [开|关] 只显示记录 (目前是 关闭)
  • \T [字符串] 设置HTML <表格>标签属性, 或者如果没有的话取消设置
  • \x [on|off|auto] 切换扩展输出模式(目前是 关闭)

连接

  • \c[onnect] {[DBNAME|- USER|- HOST|- PORT|-] | conninfo} 连接到新数据库(当前是”postgres”)
  • \conninfo 显示当前连接的相关信息
  • \encoding [编码名称] 显示或设定客户端编码
  • \password [USERNAME] 安全地为用户更改口令

操作系统

  • \cd [目录] 更改目前的工作目录
  • \setenv NAME [VALUE] 设置或清空环境变量
  • \timing [开|关] 切换命令计时开关 (目前是 关闭)
  • ! [命令] 在 shell中执行命令或启动一个交互式shell

变量

  • \prompt [文本] 名称 提示用户设定内部变量
  • \set [名称 [值数]] 设定内部变量,若无参数则列出全部变量
  • \unset 名称 清空(删除)内部变量

大对象

  • \lo_export LOBOID 文件
  • \lo_import 文件 [注释]
  • \lo_list
  • \lo_unlink LOBOID 大对象运算

本文地址:PostgreSql日常操作记录(持续更新)

本文地址: https://github.com/maxzhao-it/blog/post/32601/

执行

1
npm config set registry https://registry.npmmirror.com

测试

1
npm config get registry

配置 NPM 不做严格的 SSL 校验

1
npm config set strict-ssl false

配置环境变量

1
NODE_TLS_REJECT_UNAUTHORIZED:0

UNABLE_TO_VERIFY_LEAF_SIGNATURE :配置 yarn 不做严格的 SSL 校验

1
yarn config set "strict-ssl" false

SSL certificate problem: unable to get local issuer certificate

配置 Git 不做 SSL 校验。

1
git config --global http.sslVerify false

fatal: unable to connect to github.com

配置 Git 使用 http 代替 https。

1
git config --global url.https://github.com/.insteadOf git://github.com/

在 Linux 非 root 用户下 sudo npm npm 命令执行的 node_module 地址不一样

本文地址 npm修改源

本文地址: https://github.com/maxzhao-it/blog/post/21566/

安装 nvm

1
sudo pacman -S nvm

配置

1
2
3
4
5
6
7
8
vim ~/.bash_profile 
# 加入下面两行
export NVM_DIR=~/.nvm
source ~/.nvm/nvm.sh

vim ~/.bashrc
# 最后加入下面一行
source ~/.nvm/nvm.sh

刷新配置

1
2
source .bash_profile
source .bashrc

校验

1
nvm --version

NVM 切换版本

1
2
3
4
5
6
# 查看版本信息
nvm list
#安装相应版本
nvm install 14.15.0
#切换使用版本
nvm use 14.15.0

卸载

1
nvm uninstall 14.15.0

配置 nvm

打开settings 文件

1
2
3
4
5
6
root: d:\develop\nvm
path: d:\develop\nvm\node
arch: 64
proxy: none
node_mirror: https://npmmirror.com/mirrors/node/
npm_mirror: https://npmmirror.com/mirrors/npm/

环境变量

  • NVM_HOME D:\develop\nvm
  • NVM_SYMLINK D:\develop\nvm\node

Path 中添加

  • %NVM_HOME%
  • %NVM_SYMLINK%

NVM 版本信息

以往的 NodeJs版本

在线安装

1
2
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

本文地址: https://github.com/maxzhao-it/blog/post/48438/

** 在 Linux 非 root 用户下 sudo npm npm 命令执行的 node_module 地址不一样 **

推荐个https://npm.taobao.org/mirrors/
可以下载想要的node版本

首先安装必要的环境(推荐方式一安装)

1
yum install gcc gcc-c++

一、方式一

1
wget https://npm.taobao.org/mirrors/node/v10.14.1/node-v10.14.1-linux-x64.tar.gz

然后执行下面命令

1
2
tar -xvf  node-v8.0.0-linux-x64.tar.xz
mv node-v8.1.4-linux-x64 node

配置环境变量

1
vim /etc/profile

在文件中添加,目录写自己的实际目录

1
2
3
#set for nodejs  
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH

生效配置文件

1
2
3
source /etc/profile
node -v
npm -v

二、方式二下载源码(make很浪费时间,但可以体验编译的乐趣)

1
wget https://npm.taobao.org/mirrors/node/v10.13.0/node-v10.13.0.tar.gz

解压安装

1
2
3
4
5
tar xvf node-v10.13.0.tar.gz
cd node-v10.13.0/
./configure
make #这个操作可能会很久
make install
over ,npm -v 看版本

三、其它操作,比如换个源

1
2
npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm -v
不想用cnpm操作,那就直接换npm源
  • 单次使用
    1
    npm install --registry=https://registry.npmmirror.com
  • 永久使用
    1
    npm config set registry https://registry.npmmirror.com
  • 检测是否成功
    1
    2
    3
    4
    #配置后可通过下面方式来验证是否成功
    npm config get registry
    #或
    npm info express

本文地址 npm安装(Centos7)

本文地址: https://github.com/maxzhao-it/blog/post/42920/

问题

1
2
3
4
5
6
7
pnpm : 无法加载文件 D:\develop\nvm\node\pnpm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
所在位置 行:1 字符: 1
+ pnpm install
+ ~~~~
+ CategoryInfo : SecurityError: (:) [],PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess

原因

Power Shell的执行策略限制了脚本的执行

查看当前策略

1
Get-ExecutionPolicy

策略:

  • Restricted:默认策略,禁止运行任何脚本,除非明确允许。
  • AllSigned:只允许运行经由数字签名并由受信任的发布者签名的脚本。
  • RemoteSigned:允许运行未经签名的脚本,但是必须由受信任的发布者在本地计算机上签名。
  • Unrestricted:允许运行所有脚本。

解决

1
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force

本文地址: https://github.com/maxzhao-it/blog/post/21566xciohsdf/

SQL(结构化查询语言)是数据库中非常强大、重要的语言,其功能主要包括( )

数据定义、数据操纵、数据控制

Maven的生命周期是

clean
default
site

1、clean生命周期:清理项目,包含三个phase。

1)pre-clean:执行清理前需要完成的工作

2)clean:清理上一次构建生成的文件

3)post-clean:执行清理后需要完成的工作

2、default生命周期:构建项目,重要的phase如下。

1)validate:验证工程是否正确,所有需要的资源是否可用。
2)compile:编译项目的源代码。
3)test:使用合适的单元测试框架来测试已编译的源代码。这些测试不需要已打包和布署。
4)Package:把已编译的代码打包成可发布的格式,比如jar。
5)integration-test:如有需要,将包处理和发布到一个能够进行集成测试的环境。
6)verify:运行所有检查,验证包是否有效且达到质量标准。
7)install:把包安装到maven本地仓库,可以被其他工程作为依赖来使用。
8)Deploy:在集成或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。

3、site生命周期:建立和发布项目站点,phase如下

1)pre-site:生成项目站点之前需要完成的工作

2)site:生成项目站点文档

3)post-site:生成项目站点之后需要完成的工作

4)site-deploy:将项目站点发布到服务器

char c = (char) 68

A的整数值是65,而a的整数值是97

Spring有5种自动装配方式,其中autodetect默认使用?

  • no —— 默认情况,自动装配方式为手动装配,即通过ref手动设定
  • byName —— 根据属性名称自动装配,如果一个bean的名称和其他bean属性一致,则进行自动装配
  • byType——按照数据类型进行自动装配,如果一个bean的名称和其他bean的属性的数据类型一致,则进行兼容并自动装配
  • constructor ——通过构造函数参数的byType方式。
  • autodetect —— 如果找到默认的构造函数,使用“自动装配用构造”; 否则,使用“按类型自动装配”

Spring基于XML配置文件创建bean,使用的类型是?

BeanFactory

JSTL的相关包引用是?

jstl.jar

ava网站项目部署时,可以选择的Servlet容器有哪些?

  • Tomcat部署方式
  • Jetty部署方式
  • Jboss部署方式

下面不是 servlet容器

  • Nginx部署方式
  • IIS部署方式

JSP网站常见的Web服务器是什么?

Tomcat 服务器

目前最为流行的Tomcat服务器是Apache-Jarkarta开源项目中的一个子项目,是一个小型、轻量级的支持JSP和Servlet 技术的Web服务器,也是初学者学习开发JSP应用的首选。

Resin 服务器

Resin是Caucho公司的产品,是一个非常流行的支持Servlet和JSP的服务器,速度非常快。Resin本身包含了一个支持HTML的Web服务器,这使它不仅可以显示动态内容,而且显示静态内容的能力也毫不逊色,因此许多网站都是使用Resin服务器构建。

JBoss服务器

JBoss是一个种遵从JavaEE规范的、开放源代码的、纯Java的EJB服务器,对于J2EE有很好的支持。JBoss采用JML
API实现软件模块的集成与管理,其核心服务又是提供EJB服务器,不包含Servlet和JSP的Web容器,不过它可以和Tomcat完美结合。

WebSphere 服务器

WebSphere是IBM公司的产品,可进一步细分为 WebSphere Performance Pack、Cache Manager 和WebSphere Application Server等系列,其中WebSphere
Application Server 是基于Java 的应用环境,可以运行于 Sun Solaris、Windows NT 等多种操作系统平台,用于建立、部署和管理Internet和Intranet Web应用程序。

WebLogic 服务器

WebLogic 是BEA公司的产品,可进一步细分为 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中 WebLogic Server 的功能特别强大。WebLogic
支持企业级的、多层次的和完全分布式的Web应用,并且服务器的配置简单、界面友好。对于那些正在寻求能够提供Java平台所拥有的一切应用服务器的用户来说,WebLogic是一个十分理想的选择。

触发器和游标的区别是?

  • 触发器是特殊的存储过程,数据库发生特殊操作时执行的代码
  • 游标用来遍历内存中的结果集

truncate与delete有什么区别?

A. TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。

B. TRUNCATE语句删除表时,不会产生回滚记录

C. delete删除数据会生成日志

Spring配置bean元数据的方式包括?

基于XML的配置方式
基于注解的配置方式
基于Java类的配置方式

JSP指定页面的编译编码是?

1.JSP指定页面的编译编码是?

下列关于SVN中版本回退的操作正确的是

svn revert

MyBatis操作数据库的核心对象是

SqlSessionFactory

JSP页面中如何嵌入Java代码?

页面中插入:<% Java代码; %>

Spring MVC中,关于Interceptor描述正确的是?

可以用来实现身份验证
可以用来实现日志记录

Spring中,事务控制机制的原理是什么?

Spring的事务控制是属于Spring Dao实现
支持编程式事务控制和声明式事务控制
细粒度的事务控制

在使用SVN过程中,当我们一个版本提交之后,通过以下哪些操作可以修改其日志信息

svn propset -r N –revprop svn:log “new log message” URL
svn propedit -r N –revprop svn:log URL

相关知识点: 第一种方法是让版本库管理员允许修订版本属性修改,这可以通过创建”pre-revprop-change”(更多相关细节可以看Subversion手册的这个小节)。钩子”pre-revprop-change”
可以在修改之前访问老的日志信息(例如,通过发送一个邮件),所以可以以某种方式保存它(例如,通过发送邮件)。一旦开启了修订版本属性修改,你可以通过svn propedit或svn
propset的–revprop选项修改修订版本属性,就像下面这个: $ svn propedit -r N –revpro

Apache和Tomcat中的关系?

Apache是HTTP服务器
Tomcat是Java JSP服务器

在Git中,如果分支开发完成,需要合并相应分支的代码,会使用到下面哪些命令 ()

git pull
git merge
git blame
git commit
相关知识点: git pull:是从一个仓库或者本地的分支拉取并且整合代码 git merge:把一个分支或或某个commit的修改合并到当前的分支上 git blame:可以显示该文件的修改、以及上次修改文件的内容 git
commit:将暂存区里的改动给提交到本地的版本库

在使用SVN的过程中,可以通过以下哪些指令查看某个文件的修改信息()

Diff
Diff with previous version
相关知识点: Diff和Diff with previous version可以查看某个文件的修改信息。Repo-browser为代码库浏览器,Show log 为查看日志。

Spring事务隔离级别包括?

ISOLATION_DEFAUL
ISOLATION_READ_UNCOMMITTED
ISOLATION_READ_COMMITTED
ISOLATION_REPEATABLE_READ
ISOLATION_SERIALIZABLE

1.TransactionDefinition.ISOLATION_DEFAULT: 使用后端数据库默认的隔离级别,Mysql 默认采用的 REPEATABLE_READ隔离级别 Oracle 默认采用的
READ_COMMITTED隔离级别。
2.TransactionDefinition.ISOLATION_READ_UNCOMMITTED: 最低的隔离级别,允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复。
3.TransactionDefinition.ISOLATION_READ_COMMITTED: 允许读取并发事务已经提交的数据,可以阻止脏读,但是幻读或不可重复读仍有可能发生。
4.TransactionDefinition.ISOLATION_REPEATABLE_READ: 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,可以阻止脏读和不可重复读,但幻读仍有可能发生。
5.TransactionDefinition.ISOLATION_SERIALIZABLE:
最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,该级别可以防止脏读、不可重复读以及幻读。但是这将严重影响程序的性能。通常情况下也不会用到该级别。

如何开启MySQL的Binlog功能?

log-bin=mysql-bin

本文地址: https://github.com/maxzhao-it/blog/post/23cfc69f/