首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Mysql旧密码升级到新版本

问将Mysql旧密码升级到新版本
EN

Stack Overflow用户
提问于 2013-12-10 03:02:18
回答 1查看 3.1K关注 0票数 1

这可能是以前有人问过的。用户的一些密码以16位格式存储。Mysql已经升级到5.5,但是表中的密码仍然是16位格式。

判断MySQL使用的密码方案的一种方法是运行下面的查询,它将列出每个用户的密码长度(16或41):

代码语言:javascript
复制
mysql> SELECT `User`, `Host`, Length(`Password`) FROM mysql.user;
+—————-+—————–+——————–+
| User | Host | Length(`Password`) |
+—————-+—————–+——————–+
| root | localhost | 16 |
| mary | 20.20.3.2 | 16 |
| fred | localhost | 16 |
| sally | 64.56.139.194 | 16 |
| fschmidt | 64.56.139.194 | 16 |
…

要将用户更改为完全相同的密码,但以较新的更长格式存储,我们可以这样做:

代码语言:javascript
复制
mysql> SET SESSION old_passwords=FALSE;
mysql> SET PASSWORD FOR ‘visitlogger’@’64.55.129.%’=PASSWORD(‘ ‘);
mysql> flush privileges;

现在我们可以验证这些更改:

代码语言:javascript
复制
mysql> SELECT `User`, `Host`, Length(`Password`) FROM mysql.user;
+—————-+—————–+——————–+
| User | Host | Length(`Password`) |
+—————-+—————–+——————–+
| root | localhost | 41 |
| mary | 20.20.3.2 | 41 |
| fred | localhost | 41 |
| sally | 64.56.139.194 | 41 |
| fschmidt | 64.56.139.194 | 41 |
+—————-+—————–+——————–+

有人能帮我找出一种自动改变的方法吗?这将是一个痛苦的手动为我的所有用户。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-12-10 03:22:00

如果要将密码设置为以旧格式设置密码的所有用户的预定义值,而不对每个用户发出SET PASSWORD,则可以这样做。

代码语言:javascript
复制
SET SESSION old_passwords=FALSE;
UPDATE mysql.user 
   SET password = PASSWORD('<some predefined value>')
 WHERE LENGTH(password) = 16;
FLUSH PRIVILEGES;

注意:在进行任何更新之前,请确保您有一个可靠的备份。以防万一。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20485237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档