【问题标题】:MySQL Error 2049: Authentication protocol errorMySQL 错误 2049:身份验证协议错误
【发布时间】:2013-09-19 20:22:22
【问题描述】:

我在尝试从其他服务器远程连接到我的数据库服务器时遇到问题。 当我尝试建立连接时收到以下错误:

ERROR 2049 (HY000): Connection using old (pre-4.1.1) authentication protocol ref 已使用(启用客户端选项“secure_auth”)

我检查了数据库服务器上的 secure_auth 选项,它关闭,我的客户端似乎有这个选项激活如消息所述。 有没有办法只通过修改数据库服务器上的设置来解决这个问题?

【问题讨论】:

    标签: mysql


    【解决方案1】:

    我遇到了同样的问题,这终于对我有用了:

    我卸载了本地 mysql 客户端(我运行的是 MySQL 5.6)并安装了 MySQL 5.5,然后重新启动了我的计算机。

    我在我的 Mac 上使用 Homebrew,所以我这样做了:

    brew uninstall mysql
    brew tap homebrew/versions
    brew install mysql55
    brew link --force mysql55
    ln -sfv /usr/local/opt/mysql55/*.plist ~/Library/LaunchAgents
    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql55.plist
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql55.plist
    

    显然,我的 5.6 客户端不想使用我公司服务器使用的安全性较低的密码,即使我曾尝试在本地关闭 secure_auth。 MySQL 5.5 不会抱怨密码安全性较低,但 5.6 会。

    【讨论】:

    • 这解决了我的问题。 MySQL 5.6 默认使用安全认证。无论我多么努力地尝试通过在 my.cnf 的 mysql 组部分中添加字符串“skip-secure-auth”来关闭安全身份验证,然后通过 php ($con=mysqli_init(); mysqli_options( $con, MYSQLI_READ_DEFAULT_FILE, "set skip-secure-auth=1;" (也尝试使用 set global secure_auth=1; or set global secure-auth=1 or set global secure-auth=true; or set global secure_auth=true using MYSQLI_INIT_COMMAND,但是在 mysql CLI 中,只有“通过 mysqli --help 显示 mysql 组中的skip-secure-auth”。
    • 对不起,我的意思是设置全局secure_auth=false,secure_auth = 0,等等。
    【解决方案2】:

    发生这种情况是因为您的用户帐户的密码使用了古老的散列算法。使用新式哈希创建一个新用户,现在可以毫无问题地使用该新用户。查看here相关信息

    【讨论】:

    • 但由于该错误消息,您甚至无法登录。如何创建新用户?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 2020-12-02
    • 2012-10-18
    • 2019-01-03
    相关资源
    最近更新 更多