共计 1963 个字符,预计需要花费 5 分钟才能阅读完成。
本篇文章为大家展示了如何解答 mysql5 改密码后不能登录问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
首先说明一下, 下面描述仅限于 Win 系统 其它系统我没试过,Mysql 自从 4.1.1 以后修改了用户密码的格式, 从 16 位增加到了 41 位, 采用了一种新的验证方法, 但 4.1 以前的客户端协议不支持这种方法, 所以造成了不能登临的后果. 即使密码正确了不能正常登录, 提示如下:
#1250 – Client does not support authentication protocol requested by server; consider upgrading MySQL client
在窗口中执行:
C:mysqlin mysql -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 本身附带的 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:mysqlin mysqld-nt -old-password
在另一窗口中 运行
C:mysqlin mysql -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:my.ini (xp,98, 中如此,2000 中应在 c:wint 下) 中的 d 段中加入 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
Very Good, 一切正常,
后来我又发现, 只要在 mysql.user 表中把 password 的字段长度改成 16 系统就自动切换到了 oldpassword 方式, 改成改回 41 后 又自动换到了新的验证方式.
在这里提醒一下, 更改 password 方式后, 要重新设制一下密码并刷新一下权限 (或重起 mysql)
上述内容就是如何解答 mysql5 改密码后不能登录问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。