mysql身份证验证数据库,数据库两种身份验证

本文目录一览:

MySQL数据库两张表,一张是身份证号,另一张是四位号和对应的籍贯信息,根据身份证号前四位查询籍贯信息

results 表的 IdNumber字段你应该是定义为NOT NULL了, 这种业务用2表关联更新就可以完成.

excel连接MySQL数据库时显示无法使用提供的凭据进行身份验证

1:数据库的连接字符串如下:

Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=数据库名;Data Source=localhost

2:数据库服务器端用户属于administrators组

3:数据库服务器端的安全性中验证方式设置为windows方式

Mysql数据库为什么要有身份验证

现象

一线的工程师反映了一个奇怪的现象,刚刚从 MySQL 官网上下载了一个 MySQL 5.7.31。安装完成后,发现使用任何密码都能登陆 MySQL,修改密码也不管用,重新启动 MySQL 也不能解决。

分析

怀疑使用了 –skip-grant-tables 使用 mysqld –print-defaults 检查,没有发现。

检查登陆用户,都是 root@localhost,说明和 proxy user 没有关系。

使用 mysql –print-defaults 检查客户端是否设置默认的用户和密码,没有发现。

发现一切都正常,再检查 plugin 字段,发现只有 root 用户是 auth_socket ,其它的用户都是 mysql_native_password,问题可能就出在这儿。

问题解决

对 auth_socket 验证插件不了解,感觉是这个插件不安全,使用下面的命令修改后,问题解决:

update user set plugin=”mysql_native_password” where user=’root’;

auth_socket 验证插件的使用场景

问题解决后,又仔细研究了一下 auth_socket 这个插件,发现这种验证方式有以下特点:

首先,这种验证方式不要求输入密码,即使输入了密码也不验证。这个特点让很多人觉得很不安全,实际仔细研究一下这种方式,发现还是相当安全的,因为它有另外两个限制;

只能用 UNIX 的 socket 方式登陆,这就保证了只能本地登陆,用户在使用这种登陆方式时已经通过了操作系统的安全验证;

操作系统的用户和 MySQL 数据库的用户名必须一致,例如你要登陆 MySQL 的 root 用户,必须用操作系统的 root 用户登陆。

auth_socket 这个插件因为有这些特点,它很适合我们在系统投产前进行安装调试的时候使用,而且也有相当的安全性,因为系统投产前通常经常同时使用操作系统的 root 用户和 MySQL 的 root 用户。当我们在系统投产后,操作系统的 root 用户和 MySQL 的 root 用户就不能随便使用了,这时可以换成其它的验证方式,可以使用下面的命令进行切换:

ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘test’;

java链接mysql数据库实现登陆如何验证?

//这是我以前写的核对数据库实现登陆的方法,你只看jdbc部分就好,我还特地给你加了点注释

String sql = “select username,password from account”;

String user = request.getParameter(“user”);

String pass = request.getParameter(“password”);

int j = 0;

Connection conn = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

conn = JDBCTools1.getConnection();

ps = conn.prepareStatement(sql);

rs = ps.executeQuery();

//从表中查询获取所有账户的用户名密码的ResultSet 对象

while(rs.next()){

int i = 0;

String username[] = new String[10];//用户名数组

String password[] = new String[10];//密码数组

username[i] = rs.getString(1);

password[i] = rs.getString(2);

if(user.equals(username[i])pass.equals(password[i])){//比对

response.getWriter().print(“you are welcome!”);

j++;

}else if(user.equals(username[i])!pass.equals(password[i])){

response.getWriter().println(“the realy password is :”+ username[i] +”,”+password[i]+”\r\n”);

response.getWriter().println(“and you password is :”+user +”,”+pass+” :so the username or password may not right”);

j++;

}else{

continue;

}

i++;

}

if(j == 0){

response.getWriter().println(“Your username may not be properly”);

}

} catch (Exception e) {

e.printStackTrace();

}finally{

JDBCTools1.release(rs, ps, conn);

}

//这是我JDBCTools的getConnection方法

getConnection{

String driverClass = oracle.jdbc.driver.OracleDriver;

String jdbcUrl = jdbc:oracle:thin:@localhost:1521:orcl;

//你的数据库的用户名密码

String user = null;

String password = null;

// 通过反射创建Driver对象

Class.forName(driverClass);

return DriverManager.getConnection(jdbcUrl, user, password);}

//这是我JDBCTools的release方法

public static void release(ResultSet rs, Statement statement,

Connection conn) {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if (statement != null) {

try {

statement.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

if (conn != null) {

try {

conn.close();

} catch (Exception e2) {

e2.printStackTrace();

}

}

}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/294014.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-26 13:15
下一篇 2024-12-26 13:15

相关推荐

  • Python 常用数据库有哪些?

    在Python编程中,数据库是不可或缺的一部分。随着互联网应用的不断扩大,处理海量数据已成为一种趋势。Python有许多成熟的数据库管理系统,接下来我们将从多个方面介绍Python…

    编程 2025-04-29
  • openeuler安装数据库方案

    本文将介绍在openeuler操作系统中安装数据库的方案,并提供代码示例。 一、安装MariaDB 下面介绍如何在openeuler中安装MariaDB。 1、更新软件源 sudo…

    编程 2025-04-29
  • 数据库第三范式会有删除插入异常

    如果没有正确设计数据库,第三范式可能导致删除和插入异常。以下是详细解释: 一、什么是第三范式和范式理论? 范式理论是关系数据库中的一个规范化过程。第三范式是范式理论中的一种常见形式…

    编程 2025-04-29
  • leveldb和unqlite:两个高性能的数据库存储引擎

    本文将介绍两款高性能的数据库存储引擎:leveldb和unqlite,并从多个方面对它们进行详细的阐述。 一、leveldb:轻量级的键值存储引擎 1、leveldb概述: lev…

    编程 2025-04-28
  • Python怎么导入数据库

    Python是一种高级编程语言。它具有简单、易读的语法和广泛的库,让它成为一个灵活和强大的工具。Python的数据库连接类型可以多种多样,其中包括MySQL、Oracle、Post…

    编程 2025-04-28
  • 如何计算两种股票收益率的协方差

    协方差是用来衡量两个变量间线性关系强度的方法,它显示了两个变量如何一起变化。在股票市场中,我们常常需要计算两种股票之间的协方差,以衡量它们的投资回报之间的关系。本文将从多个方面详细…

    编程 2025-04-28
  • Think-ORM数据模型及数据库核心操作

    本文主要介绍Think-ORM数据模型建立和数据库核心操作。 一、模型定义 Think-ORM是一个开源的ORM框架,用于简化在PHP应用中(特别是ThinkPHP)与关系数据库之…

    编程 2025-04-27
  • 如何使用Python将CSV文件导入到数据库

    CSV(Comma Separated Values)是一种可读性高、易于编辑与导入导出的文件格式,常用于存储表格数据。在数据处理过程中,我们有时需要将CSV文件导入到数据库中进行…

    编程 2025-04-27
  • Python批量导入数据库

    本文将介绍Python中如何批量导入数据库。首先,对于数据分析和挖掘领域,数据库中批量导入数据是一个必不可少的过程。这种高效的导入方式可以极大地提高数据挖掘、机器学习等任务的效率。…

    编程 2025-04-27
  • Activiti 6自动部署后不生成数据库act_hi_*的解决方法

    本文将从多个方面详细阐述Activiti 6自动部署后不生成数据库act_hi_*的问题,并提供对应的代码示例。 一、问题分析 在使用Activiti 6部署流程后,我们发现act…

    编程 2025-04-27

发表回复

登录后才能评论