色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

mysql密碼文件及密文

錢琪琛2年前10瀏覽0評論

MySQL 是一種流行的關系型數據庫管理系統,它使用用戶名和密碼來限制用戶對數據庫的訪問。MySQL 提供了一種簡單而有效的方法來保護密碼,即通過密碼文件和密文存儲方式來保存密碼。

$ mysql_config_editor set --login-path=local --host=localhost --user=username --password
Enter password: 
$ cat ~/.mylogin.cnf
[local]
user=username
password=mysupersecretpassword

MySQL 密碼文件就是 .mylogin.cnf,它可以存儲多組用戶名和密碼。這個文件只有用戶自己可以讀取和寫入,確保了密碼文件的安全性。另外,MySQL 利用基于加密算法的密文來存儲密碼,這樣即使有人獲得了密碼文件,也不會輕易地獲取到密碼。

$ SELECT user, password FROM mysql.user WHERE User = 'username';
+----------+-------------------------------------------+
| user     | password                                  |
+----------+-------------------------------------------+
| username | *A1296498F7F008C4F3A2E552720EA9CDB1ED8D3D |
+----------+-------------------------------------------+

在命令行下的查詢中,用戶的密碼字段以 \* 開頭的密文形式存儲。因為可能有多種加密算法可供選擇,如果想知道哪種算法用來加密密碼,可以執行如下的查詢。

$ SHOW VARIABLES LIKE 'default_password%';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| default_password_lifetime | 0     |
| default_password_return | 0     |
| default_password_algorithm | sha256_password |
+------------------------+-------+

接下來是一個簡單的例子,展示如何用 Python 驗證一個用戶的密碼。Python 3.x 版本中的 MySQL Connector API 包含一個名為 auth_plugin 的庫,可以幫助我們驗證密碼。

import mysql.connector as mysql
config = {
"user": "root",
"password": "mypassword",
"host": "localhost",
"database": "mydatabase"
}
cnx = mysql.connect(**config)
try:
# create a user named `myuser` with password `mypassword`
cursor = cnx.cursor()
cursor.execute("CREATE USER 'myuser'@'localhost' IDENTIFIED BY 'mypassword';")
cursor.execute("GRANT ALL ON mydatabase.* TO 'myuser'@'localhost';")
cursor.close()
# authenticate the user with their password
auth_plugin = cnx.auth_plugin_name
if auth_plugin == "caching_sha2_password":
import sha2_password_auth
auth_string = sha2_password_auth.auth_string(config["password"])
else:
from mysql_native_password import get_auth_plugin
auth_string = get_auth_plugin(config["password"])
cnx = mysql.connect(user="myuser", password=auth_string, **config)
print("Authenticated successfully")
finally:
cnx.close()