作者:天极软件 源头:天极软件
在背面年夜节的例子里说明晰明晰一个紧张的准绳:当你运用INSERT
或UPDATE
语句存储一个非空的口令时,你必需运用PASSWORD()
函数加密它。这是因为在user
表中以加密体式格局存储口令,而不是作为纯文本。若是你健忘这个理想,你可以像如许试图设置口令:
shell> mysql -u root mysql mysql> INSERT INTO user (Host,User,Password) VALUES('%','jeffrey','biscuit'); mysql> FLUSH PRIVILEGES
功效是纯文本值'biscuit'
作为口令被存储在user
表中。在用户jeffrey
试图用这个口令衔接效劳器时,mysql
客户用PASSWORD()
加密它并且将功效送给效劳器,效劳器比拟在user
表中的值(它是纯文本值'biscuit'
)和加密的口令(而不是 'biscuit'
),比拟失败并且效劳器拒绝衔接:
shell> mysql -u jeffrey -pbiscuit test Access denied
因为当他们被拔出user
表时,口令必需被加密,相反,INSERT
语句应该象如许被指定:
mysql> INSERT INTO user (Host,User,Password) VALUES('%','jeffrey',PASSWORD('biscuit'));
当你运用SET PASSWORD
语句时,你也必需运用PASSWORD()
函数:
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
若是你运用GRANT ... IDENTIFIED BY
语句或mysqladmin password
命令设置口令,PASSWORD()
函数是不必要的。他们都思量到为你加密口令,多以你可像如许指定一个口令'biscuit'
:
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
或
shell> mysqladmin -u jeffrey password biscuit
留神: PASSWORD()
不因此在Unix口令加密的异常举措实验口令加密。你不该该假定若是你的Unix口令和你的MySQL口令是一样的,PASSWORD()
将招致与在Unix口令文件被存储的异常的加密值。见6.2 MySQL 用户名和口令。
版权声明:
原创作品,容许转载,转载时请务必以超链接体式格局标明文章 原始来由 、作者信息和本声明。否则将清查功令责任。