1. 程式人生 > >MySQL資料庫加密和解密~認證登陸密碼(mysql.user)和MySQL不區分大小寫

MySQL資料庫加密和解密~認證登陸密碼(mysql.user)和MySQL不區分大小寫

MySQL資料庫認證密碼有兩種方式:
1:MySQL 4.1版本之前是MySQL323加密
2:MySQL 4.1和之後的版本都是MySQLSHA1加密

還有函式:AES_ENCRYPT()加密函式和AES_DECRYPT()解密函式和MD5()加密。

MySQL資料庫中自帶old_password(str)和password(str)函式,前者是MySQL323加密,後者是MySQLSHA1方式加密;
MYSQL323加密中生成的是16位字串,而在MySQLSHA1中生存的是41位字串,其中*是不加入實際的密碼運算中,就是說MySQLSHA1加密的密碼的實際位數是40位;

MYSQL323對應於old_password(str)函式
MYSQLSHA1對應於password(str)函式

注:AES_ENCRYPT()加密函式和AES_DECRYPT()解密函式都需要一個“key”來協助加密。
eg:select aes_encrypt('kaka123','key');
   select aes_decrypt(aes_encrypt('kaka123','key'),'key');
1.MYSQL323對應於old_password(str)函式加密:
mysql> select old_password('kaka123');
+-------------------------+
| old_password('kaka123') |
+-------------------------+
| 2ee53a20184c9267        |
+-------------------------+
1 row in set, 1 warning (0.00 sec)

2.MYSQLSHA1對應於password(str)函式加密:

 mysql> select password('kaka123');
+-------------------------------------------+
| password('kaka123')                       |
+-------------------------------------------+
| *90B3D884FB6092549F244125549B77C000A0F9C6 |
+-------------------------------------------+
1 row in set (0.00 sec)

3.MYSQL MD5()加密:

mysql> select md5('kaka123');
+----------------------------------+
| md5('kaka123')                   |
+----------------------------------+
| 5d052f1e32af4e4ac2544a5fc2a9b992 |
+----------------------------------+
1 row in set (0.00 sec)

4.AES_ENCRYPT()加密函式

mysql> select aes_encrypt('kaka123','key');
+------------------------------+
| aes_encrypt('kaka123','key') |
+------------------------------+
| D#jA
                 |
+------------------------------+
1 row in set (0.00 sec)

5.AES_DECRYPT()解密函式

mysql> select aes_decrypt(aes_encrypt('kaka123','key'),'key');
+-------------------------------------------------+
| aes_decrypt(aes_encrypt('kaka123','key'),'key') |
+-------------------------------------------------+
| kaka123                                         |
+-------------------------------------------------+
1 row in set (0.00 sec)

4.AES_ENCRYPT()加密函式

mysql> select host,user,password from mysql.user;
+----------------+------+-------------------------------------------+
| host           | user | password                                  |
+----------------+------+-------------------------------------------+
| localhost      | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| tony\_ts\_tian | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| 127.0.0.1      | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| ::1            | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| %              | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| %              | kaka | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 |
+----------------+------+-------------------------------------------+
6 rows in set (0.00 sec)

mysql> update mysql.user set password=AES_ENCRYPT("kaka123",'key') where host='%' and user='kaka';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>  select host,user,password from mysql.user;
+----------------+------+-------------------------------------------+
| host           | user | password                                  |
+----------------+------+-------------------------------------------+
| localhost      | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| tony\_ts\_tian | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| 127.0.0.1      | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| ::1            | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| %              | root | *71ABCA8B06D46066CEF8062A75256E66243D0FC8 |
| %              | kaka | œDŸ#jAÂ
                          |       ¯Ll 
+----------------+------+-------------------------------------------+
6 rows in set (0.00 sec)

5.AES_DECRYPT()解密函式

mysql> select host,user,AES_DECRYPT(password,'key') from mysql.user;
+----------------+------+-----------------------------+
| host           | user | AES_DECRYPT(password,'key') |
+----------------+------+-----------------------------+
| localhost      | root | NULL                        |
| tony\_ts\_tian | root | NULL                        |
| 127.0.0.1      | root | NULL                        |
| ::1            | root | NULL                        |
| %              | root | NULL                        |
| %              | kaka | kaka123                     |
+----------------+------+-----------------------------+
6 rows in set (0.00 sec)

mysql不區分大小寫:

修改MySql Server安裝目錄下的 my.ini 或my.conf檔案

在mysqld節下加入下面一行
lower_case_table_names=0 
(0:大小寫敏感;1:大小寫不敏感)最後重啟一下MySql服務即可。 
修改對於新建的表,老表無效

#解決mysql欄位不區分大小寫:

CREATE TABLE `user`(
	`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT'使用者登入表主鍵id',
	`uname` VARCHAR(35) NOT NULL COMMENT'使用者登入名',
	`upass` VARCHAR(32) NOT NULL COMMENT'使用者登入密碼',
	`ustatus` VARCHAR(2) NOT NULL DEFAULT '0' COMMENT'使用者登入狀態,0為正常,1為鎖定',
	UNIQUE (`uname`),
	PRIMARY KEY(`id`)
)ENGINE = INNODB COLLATE=utf8_bin COMMENT='使用者登入表';

注:COLLATE=utf8_bin

相關推薦

MySQL資料庫加密解密~認證登陸密碼(mysql.user)MySQL區分大小寫

MySQL資料庫認證密碼有兩種方式: 1:MySQL 4.1版本之前是MySQL323加密 2:MySQL 4.1和之後的版本都是MySQLSHA1加密 還有函式:AES_ENCRYPT()加密函式

MySQL資料庫加密解密

資料加密、解密在安全領域非常重要。對程式設計師而言,在資料庫中以密文方式儲存使用者密碼對入侵者剽竊使用者隱私意義重大。 有多種前端加密演算法可用於資料加密、解密,下面我向您推薦一種簡單的資料庫級別的資料加密、解密解決方案。以MySQL資料庫為例,它內建了相應的加密函式(AES_ENCRYPT() )和解

加密解密會員註冊密碼

可以自己寫個加密解密的程式.可逆的.一般是用MD5進行加密.資料庫寫入的資料是加密後的.不過這種加密方法是不可逆的. 寫了個加密,解密的程式,很簡單的 :) <% @Language="JavaScript" %><%var pwd = "灰豆";funct

servlet+jsp+mysql+資料庫連線池實現註冊登陸驗證碼功能

首先專案的結構及所用到的jar包如圖: 主要用到jdbc和jstl的jar包,大家可自行去相應網站下載 一、資料庫和資料表的建立 1.建庫語句: create database test; 2.建表語句: CREATE TABLE `t_users` (  

重新學習MySQL資料庫9:Innodb中的事務隔離級別鎖的關係

本文出自我的公眾號:程式設計師江湖。 滿滿乾貨,關注就送。 轉自https://tech.meituan.com/innodb-lock.html Innodb中的事務隔離級別和鎖的關係 前言: 我們都知道事務的幾種性質,資料庫為了維護這些性質,尤其是一致性和

MySQL資料庫(表)的匯入匯出(備份還原) mysql 根據一張表資料更新另一張表

(select * from crawlDocs order by DocCrawlTime desc limit 2000 into outfile '/tmp/weixinData' FIELDS TERMINATED BY ',';) 一般最好是匯出到/tmp目錄下,因為這樣mysql使用者也可以寫入。

MySQL資料加密解密

1.建立表,密碼欄位必須是32位,不然,插入資料進行MD5加密時,此欄位不能加密。 表結構: 2.在表中插入資料,u_pwd表字段進行MD5加密。 SQL語句: insert into t_user

MFC 對話方塊 運用mysql資料庫 製作登入介面,記住密碼功能

首先MFC連線mysql資料庫的配置百度配好,這裡不再解釋。注意x64和x32配置時是有區別的。x64的系統libmysqld.dll檔案要放到工程檔案X64\DEBUG中才能配置好資料庫連線。 1.新建MFC工程 命名為登入介面。在資源檢視新增對話方塊資源IDD_DIAL

MySQL資料庫localhost的root使用者登陸遭遇失敗

# Example MySQL config file for medium systems. # # This is for a system with little memory (32M - 64M) where MySQL plays # an important part, or systems

mysql 資料庫查詢語句 左外連線 右外連線 內連線區別

 左外連結查詢:A  left join  B  on  conidtion  where condition       用A表 的全部資料去匹配 B表 B表無匹配資料時用null代替                       左聯左不丟資料  右外連線查詢:A  ri

用java實現對MySql資料庫中資料的讀取、插入、修改刪除

目標: 1、實現eclipse同資料庫的連線 2、在eclipse中用java實現對資料庫的控制 初學java和資料庫,本文是參考這篇文章的思路的學習筆記,程式碼實現了將4個控制函式(讀取、插入、修改和刪除)分別寫成4個靜態方法呼叫。 1. 關於java和MySQL的連

加密解密,(數字)簽名驗證,公鑰私鑰

網路安全中最知名的人物大概就是Bob和Alice了,因為很多安全原理闡述中都用這兩個虛擬人物來進行例項說明。 我們來看看Bob是怎麼從CA中心獲得一個數字證書的: 1、Bob首先建立他自己的金鑰對(key pair),包含公鑰和私鑰; 2、Bob通過網路把他的公鑰送到CA中心,公鑰中包含了Bob的個人鑑別

52.mysql命令:設置更改root密碼、連接mysqlmysql常用命令

設置更改root密碼 連接mysql mysql常用命令 一、設置更改root密碼 ps -ef |grep mysql //查看mysql是否啟動,如果沒有啟動就執行下面命令啟動 /etc/init.d/mysqld start 登陸mysql需要執行下面的命令 /usr/local

資料庫】-【MySQL資料庫8.0.x安裝的時候,與Navicat連結上】-【Navicat 1251錯誤】

嗯……安裝一個數據庫,過程不是很順利啊; 其實主要還是因為MySQL版本的更新帶來的問題; 比較矛盾的是,cmd安裝最新版的MySQL需要用最新的更改口令的方法, 而Navicat(或者因為我下的版本比較老的原因),支援的是老方法,也就是我們SET的方法;

MySQL修改配置 區分大小寫區分大小寫

區分大小寫 : 修改MySql Server安裝目錄下的 my.ini 檔案,在mysqld節下加入下面一行lower_case_table_names=0 (0:大小寫敏感;1:大小寫不敏感)最後重啟一下MySql服務即可。 區區分大小寫:修改MySql Server安

MySql解決區分大小寫中文模糊查詢問題

轉載自:http://blog.163.com/origin_zmn/blog/static/1837026922011720101328642/ BINARY不是函式,是型別轉換運算子,它用來強制它後面的字串為一個二進位制字串,可以理解為在字串比較的時候區分大小寫 第

登入mysql資料庫出現 : ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: NO) ER

登入mysql資料庫的時候出現 : ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost'(using password: NO) ERROR 1045 (28000): Access denied for

出現錯誤 連線MySQL資料庫,出現問題:Access denied for user 'root'@'localhost' (using password:YES)

連線MySQL資料庫,出現問題:Access denied for user 'root'@'localhost' (using password:YES)。         經查詢資料發現是ro

MySQL 資料庫連線失敗 SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (13)

CentOS6.5x64 安裝禪道6.2,生成配置檔案,資料庫連線失敗 資料庫連線失敗 SQLSTATE[HY000] [2003] Can't connect to MySQL server on '127.0.0.1' (13) root,密碼肯定沒有錯(命令列可

mysql 區分大小寫

小寫 ron mysql mes dir mysqld bsp strong val show variables like ‘%case%‘ +------------------------+-------+| Variable_name | Valu