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/zh-hk/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

發表回復

登錄後才能評論