首页 > 编程知识 正文

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

时间:2023-12-27 22:26:41 阅读:324766 作者:AOUG

本文目录一览:

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]+"rn");

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();

}

}

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。