mysql错误2049连接使用mac的旧(4-1-1级)身份验证

时间:2013-08-14 18:40:04

标签: mysql macos mysql-error-1064

我一直在执行从4.0.24到5.6.12的mysql迁移,实际上是用python脚本完成的,当一个可爱的mysql更新破坏了我对旧服务器的身份验证时传输数据。

我使用的是mac os x 10.8.5。以前版本的mysql通过brew是5.5.27,5.5.28,5.5.29,& 5.6.12。我遇到了以前使用权限的问题,并最终将所有这些权限吹走(在制作/ usr / local副本之后)。现在我只有mysql 5.6.13 ...我能够通过提交重新安装5.6.12,但5.5。*版本(文件)不再通过mysql.com通过brew提供。

所以我得到的错误是:

machine:folder user$ python migrate.py
Traceback (most recent call last):
......
    return DBH( params )
  File "dbh.py", line 32, in __init__
    db=self.params.get('db')
  File "/Volumes/Data/Users/user/.virtualenvs/migrate/lib/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/Volumes/Data/Users/user/.virtualenvs/migrate/lib/python2.7/site-packages/MySQLdb/connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2049, "Connection using old (pre-4.1.1) authentication protocol refused (client option 'secure_auth' enabled)")

请记住我通过pip安装了mysql-python;并尝试了1.2.3和1.2.4(没有其他版本)

我正在使用virtualenvwrapper包含的网站包...也尝试使用不同版本的pip而不是mysql-python

我对mac OS还不熟悉,所以我不确定这些软件包中的其中一个是如何完全相互作用的...我最好的猜测是brew install mysql既是服务器库,也是客户端库,和服务;并且本地pip安装mysql-python只延伸到brew安装...然后virtualenv将覆盖本地mysql-python安装。如果这不正确,请让我知道并解释如果可能,也可以帮助我。

我确实找到了以下链接,但最终没有帮助:

  • mysql-error-1064(看起来它朝着正确的方向前进,但没有解释如何具体实施它。

任何线索?非常感谢你提前。

1 个答案:

答案 0 :(得分:3)

自5.6.7以来的MySQL版本默认启用secure_auth,这意味着如果使用4.1之前的方法对MySQL用户密码进行哈希处理,则5.6.7+客户端将不允许您连接。您说您正在从4.0.24安装迁移,因此您的MySQL用户密码肯定是使用4.1之前的方法进行哈希处理。

使用mysql命令行工具时,可以使用--skip-secure-auth命令行选项解决此问题并连接到4.1之前的数据库。例如:

mysql -h 127.0.0.1 -u username -p --skip-secure-auth

不幸的是,没有办法在mysql-python中禁用secure_auth