MySQL5 改密码后不能登录问题的解答

zengsai887

zengsai887

2016-01-29 14:59

MySQL5 改密码后不能登录问题的解答,MySQL5 改密码后不能登录问题的解答
 

首先说明一下,下面描述仅限于Win系统 其它系统我没试过,Mysql 自从4.1.1以后修改了用户密码的格式, 从16位增加到了41位, 采用了一种新的验证方法,但4.1以前的客户端协议不支持这种方法,所以造成了不能登临的后果.即使密码正确了不能正常登录,提示如下:

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/mysql/)

#1250 - Client does not support authentication protocol requested by server; consider upgrading MySQL client

在窗口中执行:

C:mysqlbinmysql -uroot

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 1 to server version: 5.0.0-alpha-nt

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql select password('aa');

+-------------------------------------------+

| password('aa')|

+-------------------------------------------+

| *DEE59C300700AF9B586F9F2A702231C0AC373A13 |

+-------------------------------------------+

1 row in set (0.00 sec)

mysql

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

Mysql官方网站给出了二种解决方法

1,使用新的客户端api,

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

我首先尝试了第一种方法,从mysql5.0中拷贝libmysql.dll到php 的扩展目录中,替代了php本身附带的libmysql.dll, 但结果令人失望. Php提示装入php_mysql.dll失败:PHP Warning: PHP Startup: Unable to load dynamic library 'c:/php5/ext/php_mysql.dll' - 找不到指定的程序。后来发现新版的dll中缺少了mysql_drop_db() 这一函数 :( 只有等php或mysql出更新的dll了.

第一种方法行不通,只有试试第二种方法,mysql的官方FAQ中说,需要加上-old-password这一参数,我首先尝试 在命令行下起动mysql,

c:mysqlbinmysqld-nt -old-password

在另一窗口中 运行

C:mysqlbinmysql -uroot

Welcome to the MySQL monitor. Commands end with ; or g.

Your MySQL connection id is 540 to server version: 5.0.0-alpha-nt

Type 'help;' or 'h' for help. Type 'c' to clear the buffer.

mysql select password('mypassword');

+------------------------+

| password('mypassword') |

+------------------------+

| 162eebfb6477e5d3  |

+------------------------+

1 row in set (0.55 sec)

mysql

可以看出password的结果又变成16位的了,可喜的变化

我在c:windowsmy.ini (xp,98,中如此,2000中应在c:wint下)中的"mysqld"段中加入"set-variable=old-passwords"

例:

[mysqld]

basedir=C:/mysql

set-variable=old-passwords

datadir=C:/mysql/data

[WinMySQLadmin]

Server=C:/mysql/bin/mysqld-nt.exe

user=root

password=mypassword

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

后来我又发现,只要在mysql.user表中把password的字段长度改成16系统就自动切换到了oldpassword方式,改成改回41后 又自动换到了新的验证方式.在这里提醒一下,更改password方式后,要重新设制一下密码并刷新一下权限(或重起mysql)

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/mysql/)
展开更多 50%)
分享

猜你喜欢

MySQL5 改密码后不能登录问题的解答

MySQL mysql数据库
MySQL5 改密码后不能登录问题的解答

MYSQL5重置root密码

MySQL mysql数据库
MYSQL5重置root密码

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

MySQL5的异常处理

MySQL mysql数据库
MySQL5的异常处理

Mysql5写中文乱码问题解决

MySQL mysql数据库
Mysql5写中文乱码问题解决

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

MySQL5新特点(视图)

编程语言 网络编程
MySQL5新特点(视图)

如何创建MySQL5的视图

编程语言 网络编程
如何创建MySQL5的视图

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

《神雕侠侣》五大职业装备精练推荐

《神雕侠侣》五大职业装备精练推荐

如何修护MYSQL数据表

如何修护MYSQL数据表
下拉加载更多内容 ↓