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:mysqlbin>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 的扩展目录中,替代了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:mysqlbin>mysqld-nt -old-password

  在另一窗口中 运行

  C:mysqlbin>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: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)

:更多精彩教程请关注三联图文教程 频道,

分类:mysql数据库 时间:2012-01-08 人气:3
本文关键词:
分享到:

相关文章

  • freeBSD5.4下安装配置apache2+php5+mysql5过程 2012-01-31

    1.下载:mysql-standard-5.0.12-beta-freebsd5.3-i386.tar.gz 2.下载:php-5.0.5.tar.gz 3.下载:httpd-2.0.54.tar.gz 4.所下载的压缩包上传到系统的FTP上。 5.安装MYSQL: #tar zxvf mysql-standard-5.0.12-beta-freebsd5.3-i386.tar.gz #mv mysql-standard-5.0.12-beta-freebsd5.3-i386 mysql //把

  • FreeBSD上编译安装mysql5.5 2012-02-23

    mysql5.5使用了新的配置工具cmake,所以在编译安装的时候,首先要确定您的系统里已经安装了cmake,类redhat系统可以是用rpm -qa|grep cmake查看。另一个简单的方法可以使直接输入cmake 就能根据提示判断是否安装。 如果您的系统没有安装cmake,首先,下载cmake的源码包cmake-2.8.5.tar.gz,见附件。 tar zxvf cmake-2.8.5.tar.gz cd cmake-2.8.5 ./configure make&&mak

  • MySQL5.5存储过程支持limit变量 2012-04-14

    MySQL5.5存储过程支持limit变量 在审核开发的SQL时,发现有个存储过程他们是用动态SQL(CONCAT()函数)拼凑的,这样性能没有静态SQL好,于是让他们更改,结果他们说创建存储过程报错,我很纳闷,不应该啊,我这边没问题,结果咨询了那边,测试环境是用的MySQL5.1,而我这边是MySQL5.5,版本的问题。 下面我做了一个测试,这个是MySQL5.1的,如图: 创建果然报错,再来看看MySQL5.5的表现,如图: 完全OK,一切顺利。

  • mysql5.5主从同步复制配置 2012-05-24

    在上篇文章《烂泥:学习mysql数据库主从同步复制原理》中,我们介绍了有关mysql主从复制的基本原理。在这篇文章中,我们来实际测试下mysql5.5的主从同步复制功能。 注意mysql5.1.7以前版本与其以后的版本在主从同步部分参数不同。mysql5.1.7以后的版本中不支持master-connect-retry之类的参数。如果在my.cnf文件中加入该类似的参数,mysql会在下次重启时报错。 说明:主库master与从库slave都是centos6.5 64bit,如下: cat /e

  • MACOSX10.10上搭建Apache,PHP,MySQL5.6.22,phpMyAdmin开发环境 2012-06-04

    用惯了在Windows上一个appserv或phpStudy压缩包搞定,要在MAC上捣腾一个PHP开发环境还不大习惯。但自己亲自配一下环境还是有所收获的。众所周知OSX上自带了apache和php,所以这两个搞起来还比较顺利。装MySQL的最新版5.6.22版颇费周折,本文详细记录之。 apache的配置 apache已经自带了,只需如下三个命令就可以了。 开启apache服务 sudo apachectl start 停止apache服务 sudo apachectl stop 重启服务 su

  • 80端口被占用,Apache启动失败.√MySQL5.1已启动,如何快速解决? 2012-07-15

      在织梦系统本地安装过程中,使用APMServ配置本地环境,我测试的时候80端口没有被占用,很顺利的Apache成功启动,后来换了台电脑,怎么都启 动不了,不是说Apache启动失败。√MySQL5.1已启动就是Apache启动失败。√MySQL5.1启动失败,后来慢慢摸索终于弄成功了。很多 新手肯定也像我一样经常碰到这种问题。记录下来,小事情也有大意义。   1、一开始我的Apache安装的路径是D:何碧玉个人APMServ5.2.6,没注意到Apache安装的路径是不能含有汉字和空格的,所

  • CentOS 6.2编译安装Nginx1.0.14+MySQL5.5.22+PHP5.3.10步骤分享 2012-07-18

      说明:   操作系统:CentOS 6.2 32位   准备篇:   一、配置好IP、DNS 、网关,确保使用远程连接工具能够连接服务器   二、配置防火墙,开启80端口、3306端口   vi /etc/sysconfig/iptables   -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT(允许80端口通过防火墙)   -A INPUT -m state --state NEW -m tcp -p tcp

  • 用Jersey构建RESTful服务5--Jersey+MySQL5.6+Hibernate4.3 2012-08-05

    一、总体说明 本例运行演示了用Jersey构建RESTful服务中,如何同过Hibernate将数据持久化进MySQL的过程 二、环境 1.上文的项目RestDemo 2.MySQL5.6下载http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.16-win32.zip 3.Hibernate4.3.4下载http://sourceforge.net/projects/hibernate/files/hibernate4/4.3.4.Fin

  • MySQL:grant 语法详解(MySQL5.X) 2012-08-21

      本文实例,运行于MySQL5.0 及以上版本。   MySQL 赋予用户权限命令的简单格式可概括为:   grant 权限on 数据库对象to 用户   一、grant 普通数据用户,查询、插入、更新、删除数据库中所有表数据的权利。   grant select on testdb.* to [email protected]'%'   grant insert on testdb.* to [email protected]'%'   grant update on testdb.* to common_us

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.057 (s). 10 q(s)