使用mysql的加密函数运行:
目前创新互联已为千余家的企业提供了网站建设、域名、网页空间、网站托管、服务器托管、企业网站设计、盱眙网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
select HEX(AES_ENCRYPT( 'test aes encrypt','123')) as aesTest
输出密文:
17CDAE577C715A0B5A922BF07462622AF15884B6D0F596B0241DC8F966C4A93F
官方文档解释:
The block_encryption_mode system variable controls the mode for block-based encryption algorithms. Its default value is font color="red" aes-128-ecb /font, which signifies encryption using a key length of 128 bits and ECB mode. For a description of the permitted values of this variable, see Section 5.1.8, “Server System Variables” .
在线加密验证 :
该网加密结果为:
17cdae577c715a0b5a922bf07462622af15884b6d0f596b0241dc8f966c4a93f
与mysql加密结果一致,只是大小写差异。
方法一:最简单的方法,也是安装完mysql后,系统提示的方法。使用mysqladmin来完成。shell
mysqladmin
-u
root
password
"newpwd"
shell
mysqladmin
-u
root
-h
host_name
password
"newpwd"password后面的双引号不是必须的,不过如果密码包含空格或者一些特殊的符号,需要用引号。方法二:利用mysql里面的SET
PASSWORD命令来完成,注意必须使用PASSWORD()函数来加密设置的这个newpwd,否则直接='newpwd'不会生效。不过如果使用方法一用mysqladmin
password设置密码或者用GRANT来设置,就不用使用PASSWORD()函数,因为它们已经自动调用了该函数。shell
mysql
-u
root
mysql
SET
PASSWORD
FOR
'root'@'localhost'
=
PASSWORD('newpwd');
mysql
SET
PASSWORD
FOR
'root'@'host_name'
=
PASSWORD('newpwd');
方法三:直接通过UPDATE
user表来设置密码shell
mysql
-u
root
mysql
UPDATE
mysql.user
SET
Password
=
PASSWORD('newpwd')
-
WHERE
User
=
'root';
mysql
FLUSH
PRIVILEGES;
如果忘记mysql的root密码可以采取下面的步骤重新设置
1。kill掉所有mysql的进程
2。使用--skip-grant-tables的参数启动mysql
shell
mysqld_safe
--skip-grant-tables
3。设置新的密码,同样两种方式可以选择
方法一
shell
mysqladmin
-u
root
flush-privileges
password
"newpwd"
方法二
mysql
UPDATE
mysql.user
SET
Password=PASSWORD('newpwd')
-
WHERE
User='root';
mysql
FLUSH
PRIVILEGES;
4。停止mysql
server,用正常的模式启动
5。OK,可以使用新设置的密码了
首先,先介绍下加密函数,PASSWORD(string)函数可以对字符串string进行加密,代码如下:
SELECT PASSWORD('you');
如下图所示:
执行第一步的SQL语句,查询结果是一串字符串,并且PASSWORD(string)函数加密是不可逆转,
如下图所示:
另外一个加密函数MD5(string),主要针对普通的数据进行加密,代码如下:
SELECT MD5('hai');
如下图所示:
最后一个加密函数ENCODE(string,pass),可以使用字符串pass来加密字符串string。首先要创建一个数据库表t_pass_info,代码如下:
CREATE TABLE t_pass_info(
id int(10),
pass_info blob
);
如下图所示:
然后,向这个数据库表插入一条数据,代码如下:
INSERT INTO t_pass_info(id,pass_info) VALUES
(1,ENCODE('dong','bb'));
如下图所示:
6
查看插入数据库表t_pass_info记录,代码如下:
SELECT * FROM
t_pass_info;
如下图所示:
7
MySQL自带还有一个解密函数DECODE(str,pass_str),可以使用字符串pass_str来为str解密,代码如下:
SELECT DECODE(ENCODE('dong','aa'),'aa');
如下图所示:
MySQL数据库的认证密码有两种方式,
MySQL
4.1版本之前是MySQL323加密,MySQL
4.1和之后的版本都是MySQLSHA1加密,
MySQL数据库中自带Old_Password(str)和Password(str)函数,它们均可以在MySQL数据库里进行查询,前者是MySQL323加密,后者是MySQLSHA1方式加密。
(1)以MySQL323方式加密
select old_password('111111');
(2)以MySQLSHA1方式加密
select
password('111111');
MYSQL323加密中生成的是16位字符串,而在MySQLSHA1中生存的是41位字符串,其中*是不加入实际的密码运算中,通过观察在很多用户中都携带了"*",在实际破解过程中去掉"*",也就是说MySQLSHA1加密的密码的实际位数是40位。
对,常用的可以有MD5、SHA-1,加密以后存到数据库中,要用的时候,将用户输入的密码转换成MD5码后再和数据库中保存的MD5码比较,相同则说明输入密码正确(MD5出现冲突的几率相当之小),一般也都是那么干的。。。。
没有用过mysql加密,但一般都是用服务端语言把数据加密后存入数据库中,比如,在PHP里用md5函数把用户的密码加密之后存入数据中,一般都 是这么解决的。