前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >SpringSecurity入门案例——基本功能讲解

SpringSecurity入门案例——基本功能讲解

作者头像
GeekLiHua
发布于 2025-01-21 08:20:21
发布于 2025-01-21 08:20:21
20500
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

在PostgreSQL数据库中,oracle_fdw是PostgreSQL数据库支持的外部扩展。通过使用oracle_fdw扩展可以读取到Oracle数据库中的数据。它是一种非常方便且常见的PostgreSQL与Oracle的同步数据的方法。使用oracle_fdw扩展需要依赖Oracle的Instance Client环境。视频讲解如下:

下面通过具体的步骤来演示如何使用oracle_fdw扩展。

(1)从Oracle官方网站下载以下3个Oracle Instance Client安装包,如下图所示。

代码语言:powershell
AI代码解释
复制
instantclient-basic-linuxx64.zip 
instantclient-sdk-linuxx64.zip
instantclient-sqlplus-linuxx64.zip

(2)解压三个文件包。

代码语言:powershell
AI代码解释
复制
unzip instantclient-basic-linuxx64.zip 
unzip instantclient-sdk-linuxx64.zip
unzip instantclient-sqlplus-linuxx64.zip

(3)解压后会生成instantclient_21_10目录,将其更名为instantclient

代码语言:powershell
AI代码解释
复制
mv instantclient_21_10 instantclient

(4)设置Oracle环境变量。

代码语言:powershell
AI代码解释
复制
export ORACLE_HOME=/home/postgres/tools/instantclient
export OCI_LIB_DIR=$ORACLE_HOME
export OCI_INC_DIR=$ORACLE_HOME/sdk/include
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH

(5)从GitHub上下载oracle_fwd扩展,并解压安装包,如下图所示。

(6)设置pg_config的环境变量,并编译oracle_fdw扩展。

代码语言:powershell
AI代码解释
复制
export PATH=/home/postgres/training/pgsql/bin:$PATH
cd oracle_fdw-ORACLE_FDW_2_5_0/
make
make install

(7)使用root用户添加Oracle依赖的库信息,添加完成后切换回postgres用户。

代码语言:powershell
AI代码解释
复制
su -
echo "/home/postgres/tools/instantclient/" >> /etc/ld.so.conf
ldconfig
su - postgres

(8)启动PostgreSQL数据库服务器,并登录PostgreSQL数据库实例创建oracle_fdw扩展。

代码语言:sql
AI代码解释
复制
postgres=# create extension oracle_fdw;

(9)查看当前PostgreSQL数据库中已安装的扩展。

代码语言:sql
AI代码解释
复制
postgres=# \dx

# 输出的信息如下:
List of installed extensions
-[ RECORD 1 ]---------------------------------------------------
Name        | file_fdw
Version     | 1.0
Schema      | public
Description | foreign-data wrapper for flat file access
-[ RECORD 2 ]---------------------------------------------------
Name        | oracle_fdw
Version     | 1.2
Schema      | public
Description | foreign data wrapper for Oracle access
-[ RECORD 3 ]---------------------------------------------------
Name        | plpgsql
Version     | 1.0
Schema      | pg_catalog
Description | PL/pgSQL procedural language
-[ RECORD 4 ]---------------------------------------------------
Name        | postgres_fdw
Version     | 1.0
Schema      | public
Description | foreign-data wrapper for remote PostgreSQL servers

(10)创建基于oracle_fdw的外部数据库服务。

代码语言:sql
AI代码解释
复制
postgres=# create server oracle_fdw foreign data wrapper 
     oracle_fdw options(dbserver '//192.168.79.173:1521/orcl');

# 这里创建的外部数据库服务名称叫oracle_fdw,
# 并通过参数dbserver指定了外部Oracle数据库的地址信息。

(11)查看当前数据库中移创建的外部服务。

代码语言:sql
AI代码解释
复制
postgres=# \des+

# 输出的信息如下:
List of foreign servers
-[ RECORD 1 ]--------+----------------------------------------
Name                 | foreign_server
Owner                | postgres
Foreign-data wrapper | postgres_fdw
Access privileges    | 
Type                 | 
Version              | 
FDW options       | (host '192.168.79.178', port '5432', dbname 'scott')
Description          | 
-[ RECORD 2 ]--------+----------------------------------------
Name                 | oracle_fdw
Owner                | postgres
Foreign-data wrapper | oracle_fdw
Access privileges    | 
Type                 | 
Version              | 
FDW options          | (dbserver '//192.168.79.173:1521/orcl')
Description          | 
-[ RECORD 3 ]--------+-----------------------------------------------
Name                 | service_file
Owner                | postgres
Foreign-data wrapper | file_fdw
Access privileges    | 
Type                 | 
Version              | 
FDW options          | 
Description          | 

(12)创建PostgreSQL和Oracle之间的用户映射。

代码语言:sql
AI代码解释
复制
postgres=# create user mapping for postgres server oracle_fdw 
    options (user 'c##scott', password 'tiger');

# 该语句为本地postgres用户创建了一个访问
# 远程服务器oracle_fdw时的用户映射,
# 也就是使用用户名c##scott和密码 tiger连接远程服务器。

(13)查看用户映射信息。

代码语言:sql
AI代码解释
复制
postgres=# \deu+

# 输出的信息如下:
List of user mappings
-[ RECORD 1 ]------------------------------------------
Server      | foreign_server
User name   | postgres
FDW options | ("user" 'postgres', password 'Welcome_1')
-[ RECORD 2 ]------------------------------------------
Server      | oracle_fdw
User name   | postgres
FDW options | ("user" 'c##scott', password 'tiger')

(14)在PostgreSQL数据库中创建外部表访问Oracle中的数据。

代码语言:sql
AI代码解释
复制
postgres=# create foreign table oracle_emp(
  empno numeric(4,0) options (key 'true') not null,
  ename        varchar(10), 
  job          varchar(9) , 
  mgr          numeric(4,0), 
  hiredate     timestamp,	
  sal          numeric(7,2) , 
  comm         numeric(7,2), 
  deptno       numeric(2,0)
)server oracle_fdw 
options (schema 'C##SCOTT', table 'EMP');

# 注意,这里的'C##SCOTT'和'EMP'需要大写。

(15)现在可以在本地数据库中通过外部表访问Oracle数据库中对应的远程表。

代码语言:sql
AI代码解释
复制
postgres=# select * from oracle_emp;

# 输出的信息如下:
 empno | ename  |...|   sal   |  comm   | deptno 
-------+--------+---+---------+---------+--------
  7369 | SMITH  |...|  800.00 |         |     20
  7499 | ALLEN  |...| 1600.00 |  300.00 |     30
  7521 | WARD   |...| 1250.00 |  500.00 |     30
  7566 | JONES  |...| 2975.00 |         |     20
  7654 | MARTIN |...| 1250.00 | 1400.00 |     30
  7698 | BLAKE  |...| 2850.00 |         |     30
  7782 | CLARK  |...| 2450.00 |         |     10
  7788 | SCOTT  |...| 3000.00 |         |     20
  7839 | KING   |...| 5000.00 |         |     10
  7844 | TURNER |...| 1500.00 |    0.00 |     30
  7876 | ADAMS  |...| 1100.00 |         |     20
  7900 | JAMES  |...|  950.00 |         |     30
  7902 | FORD   |...| 3000.00 |         |     20
  7934 | MILLER |...| 1300.00 |         |     10
(14 rows)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringSecurity结合JwtToken验证(后端部分)
简介:本文在SpringSecurity基础公共之上,整合JwtToken功能,本文是后端部分。
GeekLiHua
2025/01/21
1600
SpringSecurity结合JwtToken验证(后端部分)
SpringSecurity
​ Spring Security 是 Spring 家族中的一个安全管理框架。相比与另外一个安全框架Shiro,它提供了更丰富的功能,社区资源也比Shiro丰富。
roydonGuo
2022/12/05
6200
SpringSecurity
【SpringSecurity系列01】初识SpringSecurity
​ 用自己的话 简单介绍一下,Spring Security基于 Servlet 过滤器链的形式,为我们的web项目提供认证与授权服务。它来自于Spring,那么它与SpringBoot整合开发有着天然的优势,目前与SpringSecurity对应的开源框架还有shiro。接下来我将通过一个简单的例子带大家来认识SpringSecurity,然后通过分析它的源码带大家来认识一下SpringSecurity是如何工作,从一个简单例子入门,大家由浅入深的了解学习SpringSecurity。
yukong
2019/04/18
8010
【SpringSecurity系列01】初识SpringSecurity
SpringBoot集成SpringSecurity - 入门(一)
源码地址:https://github.com/springsecuritydemo/microservice-auth-center01
用户1212940
2022/04/13
1.1K0
SpringBoot集成SpringSecurity - 入门(一)
SpringSecurity 入门(一)
感觉现在的Java开发人员已经离不开Spring框架,不讨论这种事情是好是坏,但是确实好用,但是个人入门有些东西难度还是很高的,摸索的进度有些许的慢,只能慢慢的更新了,那今天就慢慢更新一期SpringSecurity的入门篇,完成完整的系统,可以直接投入生产开发使用。
是小张啊喂
2021/08/09
5850
SpringSecurity入坑(一)
整体使用内存做授权验证, 后续整理基于JDBC 做权限授权,整体一套下来的话,基本上对于springsecurity有一个基本的了解,入坑第一步建议以基础入手,大部分的配置建议查看官方源码 ,对于登出以及记住密码,细节在 源码HttpSecurity类中有详细说明,这里不做过多的说明。只提供基础的Demo示例
是小张啊喂
2021/04/06
4050
单点登录SSO解决方案之SpringSecurity+JWT实现
  通过前面几天文章我们详细的介绍了SpringSecurity的使用,本文我们来看下,结合JWT来实现单点登录操作。
用户4919348
2019/12/11
1.7K0
单点登录SSO解决方案之SpringSecurity+JWT实现
【Spring Security】003-Spring Security web权限方案(1):用户认证
在resources目录下创建static目录,并创建login.html,name必须是username和password;
訾博ZiBo
2025/01/06
1220
【Spring Security】003-Spring Security web权限方案(1):用户认证
SpringSecurity之记住我功能的实现
登录的时候,请求发送给过滤器UsernamePasswordAuthenticationFilter,当该过滤器认证成功后,会调用RememberMeService,会生成一个token,将token写入到浏览器cookie,同时RememberMeService里边还有个TokenRepository,将token和用户信息写入到数据库中。这样当用户再次访问系统,访问某一个接口时,会经过一个RememberMeAuthenticationFilter的过滤器,他会读取cookie中的token,交给RememberService,RememberService会用TokenRepository根据token从数据库中查是否有记录,如果有记录会把用户名取出来,再调用UserDetailService根据用户名获取用户信息,然后放在SecurityContext里。
Dream城堡
2018/09/10
9630
SpringSecurity之记住我功能的实现
Spring 全家桶之 Spring Security(二)
  授权的主要作用是给登录系统的用户的角色授予该角色角色所能访问的菜单列表或者能操作的功能
RiemannHypothesis
2022/08/19
4390
Spring 全家桶之 Spring Security(二)
springboot 整合 springSecurity 和shiro
SpringSecurity 安全简介 1、在 Web 开发中,安全一直是非常重要的一个方面。安全虽然属于应用的非功能性需求,但是应该在应用开发的初期就考虑进来。如果在应用开发的后期才考虑安全的问题,就可能陷入一个两难的境地:一方面,应用存在严重的安全漏洞,无法满足用户的要求,并可能造成用户的隐私数据被攻击者窃取;另一方面,应用的基本架构已经确定,要修复安全漏洞,可能需要对系统的架构做出比较重大的调整,因而需要更多的开发时间,影响应用的发布进程。因此,从应用开发的第一天就应该把安全相关的因素考虑进来,并在整个应用的开发过程中。
kirin
2021/04/30
1.2K0
Spring-Security & JWT 实现 token
因为使用的是mybatis plus,所以没有使用mapper.xml书写sql语句,直接调用提供的CRUD。
BUG弄潮儿
2022/12/05
1K0
Spring-Security & JWT 实现 token
SpringSecurity简单入门(基于SpringBoot)
在 config 包中定义 配置类 在配置类上加上 @EnableWebSecurity注解来开启安全配置 继承 WebSecurityConfigurerAdapter 重写 configure(HttpSecurity http)方法 为了快速入门使用的是内存中创建了用户和角色
用户9006224
2022/12/21
2300
Spring 全家桶之 Spring Security(一)
  Spring Security是基于Spring的安全框架,Spring Security提供全面的安全性解决方案,同时在Web Request和Method处理身份认证和授权,在Spring Framework基础上,Spring Security充分利用了Soring的 DI和AOP特性,为应用系统提供了声明式的安全访问控制功能,是一个轻量级的框架,可以很好的与Spring及Spring MVC集成
RiemannHypothesis
2022/08/19
5740
Spring 全家桶之 Spring Security(一)
Spring Security 基于数据库的认证
[wp_editor_md_c80226e17602863cd62006de14c028b6.jpg]
mySoul
2020/06/19
5190
Spring 全家桶之 Spring Security(三)
自定义类SysUser类代替Spring Security中的UserDetails类,实现UserDetails中的方法, 放在entity包中,同时新增实体类SysRole
RiemannHypothesis
2022/08/19
5730
Spring 全家桶之 Spring Security(三)
SpringBoot集成Spring Security(1)——入门程序
因为项目需要,第一次接触 Spring Security,早就听闻 Spring Security 功能强大但上手困难,学习了几天出入门道,特整理这篇文章希望能让后来者少踩一点坑(本文附带实例程序,请放心食用)
全栈程序员站长
2022/09/09
8520
SpringBoot集成Spring Security(1)——入门程序
Spring Security
springBoot 2.5.5 + Mybatis + Spring Security 5.x
P轴
2022/11/18
8340
Spring boot with Oauth2
本文节选自《Netkiller Java 手札》 作者:netkiller 网站:http://www.netkiller.cn 5.20. Spring boot with Oauth2 下面例子由
netkiller old
2018/03/05
1.8K0
SpringBoot整合SpringSecurity简单实现登入登出从零搭建
技术栈 : SpringBoot + SpringSecurity + jpa + freemark ,完整项目地址 : https://github.com/EalenXie/spring-security-login
EalenXie
2020/09/21
5.3K0
SpringBoot整合SpringSecurity简单实现登入登出从零搭建
推荐阅读
相关推荐
SpringSecurity结合JwtToken验证(后端部分)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验