1. 程式人生 > >mysql 密碼忘記怎麽辦

mysql 密碼忘記怎麽辦

跳過 code lob length 插件 mct 退出 star where

一、若數據庫是初次登陸

linux系統給數據庫生成了一個原始密碼在文件/var/log/mysqld.log中:

grep "temporary password" /var/log/mysqld.log 找到原始密碼

登陸 #mysql -uroot -p‘你找到的密碼‘

mysql>set global validate_password_policy=0 //設置密碼認證策略

mysql>set global validate_password_length=6 //設置密碼長度至少6位

mysql>alter user root@"localhost" identified by "123456" //設置密碼 我是重點要記的

初次設置,必須alter 密碼

重啟服務,再次登陸即可 systemctl restart mysqld mysql -uroot -p123456

對於密碼認證策略上述是一次性的,永久設置需設置配置文件

vim /etc/my.cnf

[mysql]

validate_password_policy=0

validate_password_length=6

:wq

重啟服務即可

二、若數據庫非初次登陸:

修改配置文件,跳過密碼監測表的監測

vim /etc/my.cnf

[mysql]

skip_grant_tables

#validate_password_policy=0

#validate_password_length=6

:wq

重啟服務 systemctl restart mysqld

進入數據庫後修改存儲數據庫密碼的字段的值

該字段是mysql庫中的user表中的authentication_string

#mysql

mysql>update mysql.user set authentication_string=password("你要設置的新密碼") where user="root"

         and host="localhost";//////我是解釋分割 password()是mysql自帶的加密函數,因為mysql不可能把你的密碼銘文存   儲在自己的表裏

mysql>flush privileges;//////我是解釋分割 flush 是刷新 ,此步是刷新權限,即把你對密碼的修改存儲在表裏的過程,必不可少!!!否則跟新密碼就白更新了

退出數據庫後,修改配置文件,不用跳過密碼監測表,用自己的新密碼登陸

mysql>exit

vim /etc/my.cnf

[mysqld]

#skip_grant_tables

validate_password_policy=0

validate_password_length=6
:wq

#systemctl restart mysqld

#mysql -uroot -p新密碼

三、重要補充:

在寫密碼策略時要監測是否該變量

#find / -name "validate_password.so"
有,則查出如下結果,可按照一或者二操作

/usr/lib64/mysql/plugin/debug/validate_password.so
/usr/lib64/mysql/plugin/validate_password.so

若查詢無結果,則安裝該插件並修改配置文件後按照一或二操作,過程如下:

修改配置文件:vim /etc/my.cnf

[mysqld]
plugin-load=validate_password.so ///我是解釋分割線:加載插件

validate-password=FORCE_PLUS_PERMANENT ////我是解釋分割線 :強制安裝以防止該插件在運行時被刪除

安裝插件:
mysql> INSTALL PLUGIN validate_password SONAME ‘validate_password.so‘;

重啟服務並監測是否安裝成功:

systemctl restart mysqld

#find / -name "validate_password.so"

mysql 密碼忘記怎麽辦