您当前位置:主页 > 资讯攻略 >
来源:未知
2021-03-29 00:06:32 浏览: 分类:资讯攻略

关于 mysql5 改密码后不能登录问题的解答

首先,下面的描述仅限于Win系统。我没试过其他系统。

从mysql 4.1.1开始,修改了用户密码的格式,从16位修改为41位,并采用了新的认证方式。

但是之前的4.1客户端协议不支持这种方式,所以造成了无法登录的后果。

即使密码正确,无法正常登录,提示如下

#1250 -客户端不支持服务器请求的身份验证协议;考虑升级MySQL客户端

在窗口中执行:

c:mysqlbin & gt;欢迎使用MySQL monitor。命令以结尾;或者g .
您的MySQL连接id是1到服务器版本:5 . 0 . 0-alpha-nt
键入“help”或“h”表示帮助。键入“c”清除缓冲区。
MySQL & gt;选择密码(' aa ');
+-+
| password(' aa ')|
+-+
| * dee 59 c 300700 af9 b 586 f 9 f2a 702231 c0 AC 373 a 13 |
+-+
1行in set(0.00 sec)
MySQL & gt;

从上面可以看出,password的结果返回一个以' * '开头的41位字符串,而以前是16位的。

Mysql官网给出了两种解决方案。

1、使用新的客户端api,

2.强制服务器使用旧的密码方案

首先,我尝试了第一种方法,将libmysql.dll从mysql5.0复制到php的扩展目录,而不是php自带的libmysql.dll,但结果令人失望。Php提示加载php_mysql.dll失败:

PHP警告:PHP启动:无法加载动态库' c:/PHP 5/ext/PHP _ MySQL . dll '-找不到指定的程序。

后来发现新版dll中少了函数mysql_drop_db():(只等php或者mysql释放更新后的dll。

第一种方法不行,只能试试第二种方法。mysql的官方FAQ说需要添加参数-old-password。

我第一次尝试在命令行启动mysql,

c:mysqlbin & gt;mysqld-nt-旧密码

在另一个窗口运行。

以下是引用的内容:c:mysqlbin >:MySQL-u root
欢迎来到MySQL monitor。命令以结尾;或者g .
您的MySQL连接id是540到服务器版本:5 . 0 . 0-alpha-nt
键入“help”或“h”表示帮助。键入“c”清除缓冲区。
MySQL & gt;选择密码(“我的密码”);
+-+
| password(' my password ')|
+-+
| 162 eebfb 6477 e5d 3 |
+-+
集合中的1行(0.55秒)
MySQL & gt;

可以看到,密码的结果又变成了16位,这是一个可喜的变化,

[省略弯路和一些..........]

我在c:windowsmy.ini (xp,98,所以2000年应该在c:wint下)“mysqld & quot在该节中加入“。set-variable =旧密码& quot

示例:

以下是引用的内容:[mysqld]
basedir = c:/MySQL
set-variable = old-passwords
datadir = c:/MySQL/data
[winmysql admin]
server = c mysqld-nt . exe
user = root
password = my password

然后在服务管理器中启动mysql

很好,一切都很好,

后来我发现只要在mysql.user表中把password的字段长度改成16,系统就会自动切换到旧密码模式,再改回41之后就会自动切换到新的认证模式。

这里提醒一下,更改密码方法后,要重置密码,刷新权限(或者重启mysql)

关键词:问题,答案,登录,不能,

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227254.html

攻略资讯
安卓软件