以下节选择《Netkiller Architect 手札》 作者:netkiller 地址 http://www.netkiller.cn/architect/ 接下来几周的话题是数据库安全。...Token 认证 我们在staff表的基础上增加 token 字段 CREATE TABLE `staff` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT...`staff` (`name`, `token`) VALUES ('John', '678797066'); /* SQL错误(1001):Permission denied */ 下面再测试,首先生成一个正确的...`staff` WHERE `id` = 5; 开发注意事项, Token 生成算法要保密,不要使用下面SQL提交数据 INSERT INTO `test`....可以将Token计算交给程序而不是SQL,并且封装在。jar(Java)中或者。so(PHP 扩展中).
上篇文章我们介绍了SpringSecurity系统认证的流程,我们发现系统认证其实是通过一个UserDetailService的实现类来实现的,所以我们就可以使用相同的方式将认证的业务改成和数据库的对比...-- 配置数据库连接池 --> 数据库连接池 --> 数据库中对应的密码 ? ? 六、认证状态判断 我们在实际项目中因为用户的不同操作,可能会给出不同的状态,比如正常,冻结等,SpringSecurity也支持,我们来看下,如何实现。...然后我们在认证的时候使用User对象的另一个构造器就可以了 ?
工具/原料 Navicat for MySQL MySQL命令行界面 SQL脚本 方法一: 1、首先使用MySQL提供的命令行界面来导入数据库,确保电脑中安装了MySQL数据库,可以通过命令行来确认是否安装了...: 3、在将脚本拷到本地磁盘的根目录,这样方便进入找到脚本,这里以D盘来说明,使用test.sql:接着来到命令行,使用SOURCE d:/test.sql;来导入数据库,先进入mysql。...4、首先要在数据库中建立好数据库,然后导入脚本,所以先建立一个数据库哦,不要脚本是不知道要往哪个数据库中导入脚本的。...5、然后就可以输入导入.sql文件命令: mysql> USE 数据库名; mysql> SOURCE d:/test.sql; 6、看到上面的画面,说明mysql数据库已经导入成功了。...方法二:使用Navicat for MySQL图形界面来导入数据库,使用图形界面导入数据库的步骤很简单 1、在图形界面中建立好数据库之后,使用导入脚本的功能来导入数据库 2、点击选择脚本,选择D盘的test.sql
BSD 认证 这种认证方法操作起来类似于password,不过它使用 BSD 认证来验证口令。BSD 认证只被用来验证用户名/口令对。...因此,在 BSD 认证可以被用于认证之前,用户的角色必须已经存在于数据库中。BSD 认证框架当前只在 OpenBSD 上可用。...PostgreSQL中的 BSD 认证使用auth-postgresql登录类型,如果login.conf中定义了postgresql登录分类,就会用它来认证。...要使用 BSD 认证,PostgreSQL 用户账号(也就是运行服务器的操作系统用户)必须首先被加入到auth组中。在 OpenBSD 系统上默认存在auth组。
PAM 认证 这种认证方法操作起来类似password, 只不过它使用 PAM (插入式验证模块)作为认证机制。默认的 PAM 服务名是postgresql。...因此,在使用 PAM 进行认证之前,用户必须已经存在于数据库中。有关 PAM 的更多信息,请阅读 Linux-PAM 页面2 ....如果 PAM 被设置为读取/etc/shadow,认证将会失败,因为 PostgreSQL 服务器是由一个非 root 用户启动 。...然而,当 PAM 被配置为使用 LDAP 或其他认证验证方法时这就不是一个问题。
SSPI 认证 SSPI是一种用于带单点登录的安全认证的Windows技术。...当使用Kerberos认证时,SSPI和GSSAPI的工作方式相同,详见Section 20.6。...不要禁用这个选项,除非你的服务器运行在一个域账号(这包括一个域成员系统上的虚拟服务账号)下并且所有通过 SSPI 认证的所有客户端也在使用域账号,否则认证将会失败。...upn_username 如果这个选项和compat_realm一起被启用,来自 Kerberos UPN 的用户名会被用于认证。如果它被禁用(默认),会使用 SAM 兼容的用户名。...map 允许在系统和数据库用户名之间的映射。详见Section 20.2。
口令认证 有几种基于口令的认证方法。这些方法的过程类似,但是区别在于用户口令如何被存放在服务器上以及客户端提供的口令如何被通过连接发送。...不过,如果连接被SSL加密保护着,那么可以安全地使用password(不过如果依靠SSL,SSL证书认证可能是更好的选择)。 PostgreSQL数据库口令独立于操作系统用户口令。...每个数据库用户的口令被存储在pg_authid系统目录中。...口令可以用 SQL 命令CREATE USER和ALTER ROLE管理,例如CREATE ROLE foo WITH LOGIN PASSWORD 'secret’或者psql的\password命令...如果没有为一个用户设置口令,那么存储的口令为空并且对该用户的口令认证总会失败。 不同的基于口令的认证方法的可用性取决于用户的口令在服务器上是如何被加密(或者更准确地说是哈希)的。
LDAP 认证 这种认证方法操作起来类似于password,只不过它使用 LDAP 作为密码验证方法。LDAP 只被用于验证用户名/口令对。...因此,在使用 LDAP 进行认证之前,用户必须已经存在于数据库中。 LDAP 认证可以在两种模式下操作。...ldapbinddn 当做搜索与绑定认证时,用户要绑定到目录开始执行搜索的DN。 ldapbindpasswd 当做搜索与绑定认证时,用户用于绑定到目录开始执行搜索的口令。...如果那个连接成功,将被授予数据库访问。...如果第二个连接成功,将被授予数据库访问。
Peer 认证 Peer 认证方法通过从内核获得客户端的操作系统用户名并把它用作被允许的数据库用户名(和可选的用户名映射)来工作。这种方法只在本地连接上支持。...下列被支持的配置选项用于peer: map 允许在系统和数据库用户名之间的映射。详见Section 20.2。...Peer 认证只在提供getpeereid()函数、SO_PEERCRED套接字参数或相似机制的操作系统上可用。这些 OS 当前包括Linux、大部分的BSD包括OS X以及Solaris。
Ident 认证 ident 认证方法通过从一个 ident 服务器获得客户端的操作系统用户名并且用它作为被允许的数据库用户名(和可选的用户名映射)来工作。它只在 TCP/IP 连接上支持。...当为一个本地(非 TCP/IP)连接指定 ident 时,将实际使用 peer 认证(见Section 20.9)。...下列被支持的配置选项用于ident: map 允许系统和数据库用户名之间的映射。详见Section 20.2。...因此这种认证方法只适用于封闭的网络, 这样的网络中的每台客户端机器都处于严密的控制下并且数据库和操作系统管理员操作时可以方便地联系。换句话说,你必须信任运行 ident 服务器的机器。...注意这样的警告: 标识协议的本意不是作为一种认证或访问控制协议。—RFC 1413有些 ident 服务器有一个非标准的选项,它导致返回的用户名是被加密的,使用的是只有原机器管理员知道的一个密钥。
RADIUS 认证 这种认证方法的操作类似于password,不过它使用 RADIUS 作为密码验证方式。RADIUS 只被用于验证 用户名/密码对。...因此,在 RADIUS 能被用于认证之前,用户必须已经存在于数据库中。 当使用 RADIUS 认证时,一个访问请求消息将被发送到配置好的 RADIUS 服务器。...如果从一台服务器接收到否定响应,则认证失败。如果没有接收到响应,则将会尝试列表中的下一台服务器。要指定多台服务器,可将服务器名放在引号内并且用逗号分隔开。...这个参数可以被用作第二个参数标识例如该用户试图以哪个数据库用户进行认证,它可以被用于 RADIUS 服务器上的策略匹配。如果没有指定标识符,默认使用postgresql。
证书认证 这种认证方法使用 SSL 客户端证书执行认证。因此,它只适用于 SSL 连接。当使用这种认证方法时,服务器将要求客户端提供一个有效的、可信的证书。不会有密码提示将被发送到客户端。...证书的cn(通用名)属性将与被请求的数据库用户名进行比较,并且如果匹配将允许登录。用户名映射可以被用来允许cn与数据库用户名不同。...下列被支持的配置选项用于 SSL 证书认证: map 允许在系统和数据库用户名之间的映射。详见Section 20.2。...在一条指定证书认证的pg_hba.conf记录中,认证选项clientcert被假定为1,并且它不能被关掉,因为这种方法中一个客户端证书是必需的。...cert方法对基本clientcert证书验证测试所增加的东西是检查cn属性是否匹配数据库用户名。
认证问题 认证失败以及相关的问题通常由类似下面的错误消息显示: FATAL: no pg_hba.conf entry for host "123.123.123.123", user "andym",...检查你提供的口令,或者如果错误消息提到了 Kerberos 或 ident 认证类型,检查那些软件。...FATAL: user "andym" does not exist 指示的数据库用户没有被找到。...FATAL: database "testdb" does not exist 你试图连接的数据库不存在。请注意如果你没有声明数据库名,默认会用数据库用户名作为数据库名,这可能正确也可能不正确。...服务器日志可能包含比报告给客户端的更多的有关认证失败的信息。如果你为失败的原因而困惑,那么请检查服务器日志。
GSSAPI 认证 GSSAPI是用于 RFC 2743 中定义的安全认证的一个工业标准协议。PostgreSQL根据 RFC 1964 支持带Kerberos认证的GSSAPI。...GSSAPI为支持它的系统提供自动认证(单点登录)。 认证本身是安全的,但通过数据库连接发送的数据将不被加密,除非使用SSL。...,确保你有一个匹配被请求数据库用户名的 principal 的票据。...例如,对于数据库用户名fred,principal fred@EXAMPLE.COM将能够连接。...map 允许在系统和数据库用户名之间的映射。详见Section 20.2。
以下节选择《Netkiller Architect 手札》 地址 http://www.netkiller.cn/architect/ 接下来几周的话题是数据库安全。 5.6....用户/角色认证 本小节我们实现一个功能,当用户插入,修改或者删除数据时,判断该操作是否具备应有的权限。如果权限不符合就拒绝操作同时提示用户。...product` (`name`, `sn`, `price`, `amount`, `staff_id`) VALUES ('Nokia', '65722', '800', '55', '2'); /* SQL...`product` SET `name`='HTC', `sn`='5544467', `price`='2000', staff_id=2 WHERE `id`=2; /* SQL错误(1001):
信任认证 当trust认证被指定时,PostgreSQL假设任何可以连接到服务器的人都被授权使用他们指定的任何数据库用户名(即使是超级用户)访问数据库。...trust认证对于单用户工作站的本地连接是非常合适和方便的。通常它本身不适用于一台多用户机器。...因此,如果你想利用文件系统权限来控制本地安全,那么从pg_hba.conf中移除host … 127.0.0.1 …行,或者把它改为一个非trust认证方法。...如果通过指定trust的pg_hba.conf行让你信任每一个被允许连接到服务器的机器上的用户,trust认证只适合 TCP/IP 连接。
在这个过程中,数据库的作用是不容忽视的。数据库可以帮助人们将数据的收集、提取变得更简单、更方便。在大数据处理领域,一种名为sql数据库工具吸引着很多的人。那么这是一种什么工具?...sql数据库究竟有什么作用?下面就来为大家介绍一下。 image.png 一、功能众多的sql数据库 所谓sql,就是一种具有强大功能的数据库语言。...二、sql数据库的作用巨大 sql数据库有很多的优点。作为一个老牌的数据库整理程序,sql获得了广大用户的认可。就是因为其较其他数据库工具的优越性,使得sql逐渐的发展起来。...sql的数据库在响应时间、服务器回应速度等细节方面占据了优势;在系统的接受与反馈方面超越了其他的数据库管理系统。除此之外,sql是一种非过程语言,这样的优点使得sql使用起来更加的方便。...同时sql是一种关系型数据库之间的公共语言,是其他语言之间的桥梁。 以上就是为大家带来的关于sql数据库的简单介绍。通过介绍,相信大家也了解到了sql数据库的具体优点。
同时,它使用SQL(结构化查询语言)对数据进行操作。 4:关系数据库管理系统(RDBMS)的种类 ● oracle :甲骨文公司的RDBMS。 ● SQL server:微软公司的RDBMS。...● 根据SQL语句的内容返回的数据同样是二维表格式。 ● 表的行称为记录,表的列称为字段。 ● 关系数据库必须以行作为单位进行数据读写。 ● 一个单元格内只能输入一个数据。 如下图: ?...三:SQL概要 1:标准SQL 国际标准化组织(ISO)为SQL制定了相应的标准,以此为基准的SQL称为标准SQL 虽然不同的RDBMS存在一些特使的SQL语句,但学会标准SQL就可以在各种RDBMS...2:SQL语句及其种类 SQL使用关键字、表名、列名等组合成一句SQL语句来描述操作的内容。 根据指令种类不同,SQL语句可分为三种: ● DDL(数据定义语言):用来创建和删除数据库或表等对象。...3:SQL的基本书写规则 ● SQL语句要以分号(;)结尾。 ● SQL不区分关键字的大小写,但是插入到表中的数据是区分大小写的。
总结,对于这种难sql,可以先写一部分拆分,但是有些知识不会,怎么拆都写不出来,比如先前的if,就得记住,得会。...废江博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 转载请注明原文链接:数据库SQL练习
领取专属 10元无门槛券
手把手带您无忧上云