linux 下配置mysql,版本是4.1.18,安装启动以后我给root用户设置密码
#/usr/local/mysql/bin/mysqladmin -u root password 123456
注:mysql安装在/usr/local/mysql目录下
登陆时键入#mysql -u root -p
系统提示entering password: 键入123456,即刚才设置的密码
但是这时系统给出错误提示error 1251:client does not support authentication protocol requested by server:consider upgrading mysql client上网查了一下官方的说法是   
    
  MySQL   4.1   and   up   uses   an   authentication   protocol   based   on   a   password   hashing   algorithm   that   is   incompatible   with   that   used   by   older   clients.   .....   
    
    
    
  如果你升级mysql到4.1以上版本后遇到以上问题,请先确定你的mysql   client   是4.1或者更高版本.(WINDOWS下有问题你就直接跳到下面看解决方法了,因为MYSQL   在WINDOWS是client和server一起装上了的)   
    
  请使用以下两种方法之一   
    
  其一:   
    
  mysql> SET   PASSWORD   FOR   
       -> 'some_user'@'some_host' = OLD_PASSWORD('newpwd');   
    
  其二:   
    
  mysql> UPDATE  mysql.user  SET  Password=OLD_PASSWORD('newpwd')   
      -> WHERE   Host = 'some_host' AND User = 'some_user';   
  mysql> FLUSH   PRIVILEGES; 我试了一下但不知道为什么系统提示我syntax error near unexpected token '('
我的句法是这样的 SET PASSWORD FOR root@localhost=OLD_PASSWORD('123456');
有什么不对吗?另外我不懂那个mysql>是什么意思啊?是在mysql的安装目录下敲上边这些命令吗?就是说我得先cd /usr/local/mysql再set password??请达人相助,如果真的不行的话我只有重新下个新版本的来安装了。  

解决方案 »

  1.   

    mysql>
    的意思就是你登录到mysql后的命令提示符!
    你可以再后面运行mysql支持的命令!你提示的问题是说明密码验证需要一个加密算法,客户端加密之后到服务端解密,如果客户端版本比较低的话,就没有办法按照服务端要求的方式加密,服务端就没有办法解密密码并验证密码有效性,所以就会给出如上的错误提示。解决办法就是客户端和服务端安装相同版本的mysql!
      

  2.   

    回ulter:
    我装的mysql-4.1.18不包括client端吗?
      

  3.   

    OLD_PASSWORD就是将新版本的密码形式转化成老版本的密码形式,我是这样来理解的
      

  4.   

    tnds,不是你说的问题
    我现在用mysqlcc从别的机子上能登陆到服务器上的数据库,但是在服务器上用密码想进mysql,如
    #mysql -u user -p
    enter password:123456 
    它就是说error 1045:access denied for user....
    说我的用户名或者密码错误。奇了怪了。