2

我需要一个旧的 MySQL 客户端 (4.1) 连接到一个更旧的 MySQL 服务器 (3.23)。

目标是通过 Java/JDBC 连接到旧的 Linux/MySQL 3.23 数据库,以便更新 Lucene 搜索的文本信息(也将在 linuxdev2 上运行)。

问题是我无法从远程 Linux/MySql 4.1 客户端连接到 Linux/MySQL 3.23 服务器。我无法从 JDBC 连接;我无法从“mysql”连接:

LOCAL (intranet):
mysql -uSOMEUSER -pSOMEPASSWORD mysql => OK

REMOTE (from linuxdev2):
mysql -uSOMEUSER -pSOMEPASSWORD -hintranet mysql => FAILS:
ERROR 1045 (00000): Access denied for user: 'SOMEUSER@linuxdev2' (Using password: YES)

PERMISSIONS (on intranet):
mysql> select User,Host,Password from user order by User;
+-----------+-----------------------------+------------------+
| User      | Host                        | Password         |
+-----------+-----------------------------+------------------+
| SOMEUSER  | %                           | 233780be35015f2c |
| SOMEUSER  | localhost                   | 233780be35015f2c |
| ...

这些是主机:

Component      Intranet:                Linuxdev2:
---------      --------                 ---------
Java           N/A                      Sun Java 1.5.0_03
JDBC           N/A                      mysql-connector-java-3.1.6-3
MySQl Server   mysql-server-3.23.22-6   mysql-4.1.10a-3.8
MySql Client   mysql-3.23.22-6          mysql-client-4.1.10a-3

我进行了 Ethereal 跟踪并验证了从 linuxdev2 到 Intranet 的 TCP/IP 连接正常:

a) They connect on port 3306  
b) Linuxdev2 does a "Login request Caps"
c) Intranet replies with "Response Error Code: 415" (access denied)
4

1 回答 1

0

MySQL 的密码算法在 v4.1 中更改 - 相同的 password() 函数,但不同的哈希算法,因此使用password()-created 密码将 v4.1+ 客户端连接到较旧的 v3.x 服务器将不起作用。

参考:http ://dev.mysql.com/doc/refman/5.1/en/password-hashing.html

于 2011-02-28T22:12:57.810 回答