我用delphi的connection连接mysql数据库时提示警告:failure to connect:dbexpress error:[0x000c] invalid username/password
sql server error:client does not support authentication protocol requested by server;consider upgrading mysql client.我上网查了一下,好像说是dbexpress支持的mysql 的版本太旧了,要下载,但是我在网上找不到,请问是不是版本这个问题呢?如果是的,怎样才能解决呢?哪里有新的libmysql.dll下载或是旧版本的mysql server下载呢?又或者有什么解决办法呢?由于时间紧迫,顾请高手们指教,不胜感激!  ps:本人是菜鸟,表述不当之处敬请原谅^_^

解决方案 »

  1.   

    我知道的方法,安装MySQL ODBC驱动程序并设置MySQL数据源。
    然后,用ADO控件连接数据源。
      

  2.   

    thx!怎样设置和使用ado控件呢?能给一简单的例子吗?谢谢
      

  3.   

    1. 安装mysql-connector-odbc-3.51.12-win32.msi
    2. 使用TADOConnection来连接数据库, 例如:
      ADOConnection.LoginPrompt := False;
      ADOConnection.ConnectionString :=
          'Provider=MSDASQL.1;Persist Security Info=True' +
          ';Extended Properties="DATABASE=' + F_sDatabase +
          ';DRIVER={MySQL ODBC 3.51 Driver};OPTION=0;PORT=0' +
          ';SERVER=' + 服务器地址 + ';UID=' + 用户名 + ';PWD=' + 密码 + '"';
      ADOConnection.Open;
      

  4.   

    好象是这样。Delphi现在只支持 mySQL 的某一个版本。
      

  5.   

    1. 安装MySQL ODBC驱动程序 驱动下载 http://dev.mysql.com/get/Downloads/MyODBC3/mysql-connector-odbc-3.51.14-win32.zip/from/http://mysql.ntu.edu.tw/
    2. 运行odbcad32.exe,系统数据源 - 添加 - MySQL ODBC 3.51 Driver, Data Source Name 随便取个名字了(比如取名ABCD),Server MySQL服务器名称或IP, User 连接MySQL的用户名, Password 连接MySQL的密码, Database 要使用数据库。
    3. 使用TADOQuery控件连接, 
    ADOQuery1.ConnectionString := 'DSN = ABCD';// ABCD是你添加数据源时取的名称
    ADOQuery1.SQL = ......;
    ADOQuery1.Open();
      

  6.   

    用DSN的话,在程序分发时比较麻烦的。建议楼主还是用我提供的这种方法。