设置数据库(设置数据库密码)
1. 設(shè)置數(shù)據(jù)庫密碼
md5。
那個pasword為*是可以輸出來的,如果要在mysql里面存儲密碼,可以考慮用字符串類型 char(32) 32位,然后將前臺html里面輸入的密碼用MD5多加密幾次(加密一次很容易破解),然后將加密后的密碼(32位)插入到數(shù)據(jù)庫中。
如果以后要實現(xiàn)登陸驗證功能,可以把用戶登陸的密碼MD5后再跟數(shù)據(jù)庫比較。
若加密為md5形式的字符串,字段類型用varchar(50)。
驗證時也一樣把登陸時的明文加密為md5字符串到數(shù)據(jù)庫對比。
2. 設(shè)置數(shù)據(jù)庫密碼報3d000錯誤
1、首先,用筆尖把小圓點按下去。初始密碼是:000。如果修改過密碼,請一定要撥到正確密碼后,再進行這項操作。
2、撥動密碼鍵設(shè)置要設(shè)的密碼。一般的密碼都是三位的。
3、設(shè)置好密碼以后,撥動一下開鎖按扭,聽到“滴”的一聲,小圓點彈起來。密碼設(shè)置成功。注:TSA密碼鎖不帶鑰匙。如果密碼不正確,請不要進行步驟一的操作。
3. 設(shè)置數(shù)據(jù)庫密碼能確保web數(shù)據(jù)庫安全
這個是無法在mysql中看到明文的,有些密碼加密是可逆的,有不可逆的,可逆的話,要看是什么算法加密,然后解密。在mysql中有:password與md5函數(shù)password用于修改mysql的用戶密碼,如果是應(yīng)用與web程序建議使用md5()函數(shù), password函數(shù)舊版16位,新版41位,可用select length(password('123456'))察看。password函數(shù)加密不可逆,如果和數(shù)據(jù)庫里加密后內(nèi)容比較時可以采用password(pwd)==字段內(nèi)容的方式;md5函數(shù)加密后32位,此加密算法不可逆
4. 設(shè)置數(shù)據(jù)庫密碼永不過期
1、修改普通用戶密碼
passwd 11
先輸入當(dāng)前密碼確認,然后輸入新的密碼修改
2、修改root用戶密碼
sudo passwd root 11
默認root用戶被禁止登錄,如果需要解除限制,修改配置即可
sudo vim /etc/ssh/sshd_config 11
將默認配置注釋掉,添加一行新的配置,默認的配置為允許root登錄,但是禁止root用密碼登錄
PermitRootLogin prohibit-password → PermitRootLogin yes 11
sudo service ssh restart 11
二、密碼復(fù)雜度策略
注意!!!設(shè)置復(fù)雜度策略之前應(yīng)該先將當(dāng)前系統(tǒng)用戶的密碼修改為符合復(fù)雜度策略的密碼,如果不符合,設(shè)置完復(fù)雜度策略之后用戶將有不能登錄的風(fēng)險,需要提前合理規(guī)劃
1、安裝cracklib模塊
安裝PAM的cracklib模塊,cracklib能提供額外的密碼檢查能力
sudo apt-get install libpam-cracklib 11
2、相關(guān)策略設(shè)置
(1) 禁止使用舊密碼
sudo vim /etc/pam.d/common-password 11
找到如下配置,并在后面添加remember=5,表示禁止使用最近用過的5個密碼,己使用過的密碼會被保存在/etc/security/opasswd
(2)設(shè)置最短密碼長度
sudo vim /etc/pam.d/common-password 11
找到如下配置,并將默認的minlen=8改為minlen=10,表示最短密碼長度需要為10
(3)設(shè)置密碼復(fù)雜度
sudo vim /etc/pam.d/common-password 11
找到如下配置,在后面添加ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1,它表示密碼必須至少包含一個大寫字母(ucredit),一個小寫字母(lcredit),一個數(shù)字(dcredit)和一個標點符號(ocredit),具體按照需要修改即可
(4)設(shè)置密碼過期期限
sudo vim /etc/login.defs 11
找到如下配置,默認為9999天相當(dāng)于不限制,到期之前7天會提示用戶修改密碼,按照需求實際修改即可
PASS_MAX_DAYS 180 PASS_MIN_DAYS 0
5. 設(shè)置數(shù)據(jù)庫密碼命令
1.數(shù)據(jù)庫沒有設(shè)置密碼的話,直接在命令行里輸入$ mysql 就可以進入了。
2.或者先設(shè)置密碼在連mysql$ mysqladmin -u root password "新密碼"$mysql -uroot -p新密碼
6. 設(shè)置數(shù)據(jù)庫密碼時,應(yīng)該選擇打開
方法如下:
雙擊打開OracleXEClient,選擇“下一步”,
接受許可協(xié)議,選擇下一步,修改安裝路徑(可不修改),點擊下一步
等待OracleXEClient安裝完成
安裝完成后,在安裝的根目錄下創(chuàng)建network文件夾,然后在network文件夾下創(chuàng)建admin文件夾
在admin文件夾下創(chuàng)建文件tnsnames.ora
用記事本打開tnsnames.ora,添加如下信息,其中包含了數(shù)據(jù)庫連接名,數(shù)據(jù)庫名稱,oracle服務(wù)器所在ip,以及端口(一般默認端口為1521)
將Toad for Oracle解壓到任何一個目錄,(此處以D盤根目錄為例)
進入Toad for Oracle文件夾,找到toad.exe程序,雙擊打開
在彈出框中輸入連接名,密碼,選擇oracle客戶端,點擊connect,進行連接,成功連接
7. 設(shè)置數(shù)據(jù)庫密碼的注意事項
有以下方法:
方法1: 用SET PASSWORD命令
首先登錄MySQL。
格式:mysql> set password for 用戶名@localhost = password(‘新密碼');
例子:mysql> set password for root@localhost = password(‘123');
方法2:用mysqladmin
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
例子:mysqladmin -uroot -p123456 password 123
方法3:用UPDATE直接編輯user表
首先登錄MySQL。
mysql> use mysql;
mysql> update user set password=password(‘123') where user='root' and host='localhost';
mysql> flush privileges;
8. 設(shè)置數(shù)據(jù)庫密碼要用什么方式打開
mysql設(shè)置數(shù)據(jù)庫密碼常用的有四種方法:
1.用root登陸MySQL終端 mysql>setpassword=password(‘raykaeso‘); mysql>flushprivileges;
2.在MySQL終端中使用GRANT語句 mysql>grantallon*.*to‘root’@’localhost’IDENTIFIEDBY‘raykaeso’withgrantoption; mysql>flushprivileges;
3.在MySQL庫user表中直接修改 mysql>usemysql; mysql>updateusersetpassword=password(‘raykaeso’)whereuser=’root'; mysql>flushprivileges; 4、在shell命令行里修改MySQL用戶密碼 [root@raykaeso?leixuesong]mysqladmin-urootpassword“yourpassword”;
9. 設(shè)置數(shù)據(jù)庫密碼的作用
人臉識別mysql數(shù)據(jù)庫起數(shù)據(jù)提供參照作用,實現(xiàn)多項參照,精準解析:
需求描述
1.將人臉特征信息保存進MySQL數(shù)據(jù)庫。
2.調(diào)用攝像頭識別人臉,將待識別的人物進行識別,并實時地與數(shù)據(jù)庫中的人臉特征信息進行比對,同時判斷出被識別者的身份。
需求分析
1、準備
利用opencv、face_recognition、numpy、pymysql等Python第三方類庫,官方說法是face_recognition的人臉識別準確率高達99.6%。
2、識別
利用face_recognition,可以很輕易地得到人臉128維的人臉編碼,并且通過比對函數(shù),就可以得出想要的結(jié)果。
3、編碼
由于face_recognition的128維的人臉編碼是一個numpy ndarray類型,即矩陣,并不能存進數(shù)據(jù)庫,要想存進數(shù)據(jù)庫,必須進行類型轉(zhuǎn)換
思路:先將矩陣轉(zhuǎn)為列表,再將列表里的每個元素轉(zhuǎn)為字符串,再用字符串拼接的方式拼成一個字符串,這時就可以把特征值存進數(shù)據(jù)庫了。
4.譯碼
既然是特征值的比對,那么從數(shù)據(jù)庫取完數(shù)據(jù)之后,就需要把字符串重新轉(zhuǎn)為矩陣格式。
思路:先通過字符串切割,轉(zhuǎn)為列表,再對列表里每個元素轉(zhuǎn)為浮點型(float),最后再轉(zhuǎn)為矩陣。
5.輸出
常規(guī)做法通過人臉識別后想要在圖像上輸出被識別者姓名,但是opencv有自己的一套編碼規(guī)范,無法輸出中文,如果保存的是中文,那么就會出現(xiàn)亂碼的情況。
中文文字圖像顯示解決思路:通過調(diào)用本地已存在的字體,利用PIL進行格式轉(zhuǎn)換。
解決方案
數(shù)據(jù)庫設(shè)計
FaceSQL.py:MySQL數(shù)據(jù)庫處理相關(guān)
import pymysql
class FaceSQL:
def __init__(self):
self.conn = pymysql.connect(
# 數(shù)據(jù)庫的IP地址
host="xxx.xxx.xxx.xxx",
# 數(shù)據(jù)庫用戶名稱
user="******",
# 數(shù)據(jù)庫用戶密碼
password="******",
# 數(shù)據(jù)庫名稱
db="xxx",
# 數(shù)據(jù)庫端口名稱
port=3306,
# 數(shù)據(jù)庫的編碼方式 注意是utf8
charset="utf8"
)
def processFaceData(self, sqlstr, args=()):
print(sqlstr)
# 使用 cursor() 方法創(chuàng)建一個游標對象 cursor
cursor = self.conn.cursor()
try:
# 執(zhí)行sql語句
cursor.execute(sqlstr, args)
# 提交到數(shù)據(jù)庫執(zhí)行
self.conn.commit()
except Exception as e:
# 如果發(fā)生錯誤則回滾并打印錯誤信息
self.conn.rollback()
print(e)
finally:
# 關(guān)閉游標
cursor.close()
def saveFaceData(self,id,encoding_str):
self.processFaceData("insert into face(學(xué)號,encoding) values(%s,%s)", (id, encoding_str))
def updateFaceData(self, id, encoding_str):
self.processFaceData("update face set encoding = %s where 學(xué)號 = %s", (encoding_str, id))
def execute_float_sqlstr(self, sqlstr):
# 使用 cursor() 方法創(chuàng)建一個游標對象 cursor
cursor = self.conn.cursor()
# SQL插入語句
results = []
try:
# 執(zhí)行sql語句
cursor.execute(sqlstr)
# 獲取所有記錄列表
results = cursor.fetchall()
except Exception as e:
# 如果發(fā)生錯誤則回滾并打印錯誤信息
self.conn.rollback()
print(e)
finally:
# 關(guān)閉游標
cursor.close()
return results
def sreachFaceData(self, id):
return self.execute_float_sqlstr( "select * from face where 學(xué)號="+id)
def allFaceData(self):
return self.execute_float_sqlstr( "select * from face ")
def sreach_Info(self,id):
return self.execute_float_sqlstr( "select * from zstustu where 學(xué)號='" + id + "'")
FaceTools.py:人臉特征信息處理相關(guān)
import face_recognition
import numpy
from os import listdir,path
from FaceSQL import FaceSQL
class FaceTools:
def __init__(self):
try:
self.facesql=FaceSQL()
except :
print("數(shù)據(jù)庫連接錯誤")
def encoding_FaceStr(self, image_face_encoding):
# 將numpy array類型轉(zhuǎn)化為列表
encoding__array_list = image_face_encoding.tolist()
# 將列表里的元素轉(zhuǎn)化為字符串
encoding_str_list = [str(i) for i in encoding__array_list]
# 拼接列表里的字符串
encoding_str = ','.join(encoding_str_list)
return encoding_str
def decoding_FaceStr(self, encoding_str):
# print("name=%s,encoding=%s" % (name, encoding))
# 將字符串轉(zhuǎn)為numpy ndarray類型,即矩陣
# 轉(zhuǎn)換成一個list
dlist = encoding_str.strip(' ').split(',')
# 將list中str轉(zhuǎn)換為float
dfloat = list(map(float, dlist))
face_encoding = numpy.array(dfloat)
return face_encoding
def add_Face(self,image_name, id):
# 加載本地圖像文件到一個numpy ndarray類型的對象上
image = face_recognition.load_image_file("./photo/"+image_name)
# 返回圖像中每個面的128維人臉編碼
# 圖像中可能存在多張人臉,取下標為0的人臉編碼,表示識別出來的最清晰的人臉
image_face_encoding = face_recognition.face_encodings(image)[0]
encoding_str =self.encoding_FaceStr(image_face_encoding)
# 將人臉特征編碼存進數(shù)據(jù)庫
self.facesql.saveFaceData(id,encoding_str)
def updata_Face(self, image_name, id):
# 加載本地圖像文件到一個numpy ndarray類型的對象上
image = face_recognition.load_image_file("./photo/"+image_name)
# 返回圖像中每個面的128維人臉編碼
# 圖像中可能存在多張人臉,取下標為0的人臉編碼,表示識別出來的最清晰的人臉
image_face_encoding = face_recognition.face_encodings(image)[0]
encoding_str = self.encoding_FaceStr(image_face_encoding)
# 將人臉特征編碼更新數(shù)據(jù)庫
self.facesql.updateFaceData(id, encoding_str)
def sreach_Face(self, id):
face_encoding_strs = self.facesql.sreachFaceData(id)
# 人臉特征編碼集合
face_encodings = []
# 人臉特征姓名集合
face_names = []
for row in face_encoding_strs:
name = row[0]
face_encoding_str = row[1]
# 將從數(shù)據(jù)庫獲取出來的信息追加到集合中
face_encodings.append(self.decoding_FaceStr(face_encoding_str))
face_names.append(name)
return face_names,face_encodings
def load_faceoffile(self):
filepath = 'photo'
filename_list = listdir(filepath)
# 人臉特征編碼集合
face_encodings = []
# 人臉特征姓名集合
face_names = []
a = 0
for filename in filename_list: # 依次讀入列表中的內(nèi)容
a += 1
if filename.endswith('jpg'): # 后綴名'jpg'匹對
face_names.append(filename[:-4]) # 把文件名字的后四位.jpg去掉獲取人名
file_str = 'photo' + '/' + filename
a_images = face_recognition.load_image_file(file_str)
print(file_str)
a_face_encoding = face_recognition.face_encodings(a_images)[0]
face_encodings.append(a_face_encoding)
print(face_names, a)
return face_names,face_encodings
def load_faceofdatabase(self):
try:
face_encoding_strs = self.facesql.allFaceData()
except:
print("數(shù)據(jù)庫連接錯誤")
# 人臉特征編碼集合
face_encodings = []
# 人臉特征姓名集合
face_names = []
for row in face_encoding_strs:
name = row[0]
face_encoding_str = row[1]
# 將從數(shù)據(jù)庫獲取出來的信息追加到集合中
face_encodings.append(self.decoding_FaceStr(face_encoding_str))
face_names.append(name)
return face_names, face_encodings
def load_images_face(self,filepath):
filename_list = listdir(filepath)
for filename in filename_list: # 依次讀入列表中的內(nèi)容
if path.isdir(filepath+filename):
self.load_images_face(filepath+filename+"\\")
if filename.endswith('jpg'): # 后綴名'jpg'匹對
file_str = filepath + filename
a_images = face_recognition.load_image_file(file_str)
print(file_str)
face_encoding = face_recognition.face_encodings(a_images)
if face_encoding != []:
a_face_encoding = face_encoding[0]
encoding_str = self.encoding_FaceStr(a_face_encoding)
self.facesql.saveFaceData(filename[:-4], encoding_str)
def load_images_faces(self, filepath):
filename_list = listdir(filepath)
a=0
for filename in filename_list: # 依次讀入列表中的內(nèi)容
if filename.endswith('jpg'): # 后綴名'jpg'匹對
file_str = filepath + filename
a_images = face_recognition.load_image_file(file_str)
print(file_str)
face_encoding = face_recognition.face_encodings(a_images)
for a_face_encoding in face_encoding:
a += 1
encoding_str = self.encoding_FaceStr(a_face_encoding)
self.facesql.saveFaceData(filename[:-4] + "-" + str(a), encoding_str)
運行結(jié)果
總結(jié)
以上是生活随笔為你收集整理的设置数据库(设置数据库密码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis 持久化性能_高性能持久消息
- 下一篇: ps捕捉快捷键(ps快捷抓手)