【问题标题】:Ubuntu 16.04 mysql_old_password cannot be loadedUbuntu 16.04 mysql_old_password 无法加载
【发布时间】:2016-12-26 08:35:23
【问题描述】:

我想用shell命令连接到外部服务器上的mysql数据库。 Ubuntu 版本 16.04。

 mysql -uXXXXXX -pYYYYYY -h domain.com

我得到错误:

mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 2059 (HY000): Authentication plugin 'mysql_old_password' cannot be loaded: /usr/lib/mysql/plugin/mysql_old_password.so: cannot open shared object file: No such file or directory

【问题讨论】:

  • 我认为 /usr/lib/mysql/plugin/mysql_old_password.so 不存在。请检查一下。
  • 较旧的密码版本在最近的 MySQL 版本中已被弃用。从 5.7.5 开始,您需要一个散列密码,另请参阅 dev.mysql.com/doc/refman/5.7/en/password-hashing.html

标签: mysql ubuntu


【解决方案1】:

也许你只需要安装 mysql (mariadb) 客户端,运行如下:

sudo apt-get install mariadb-client

当我遇到这个问题时,上面的命令在我的 Ubuntu 16.04.2 LTS 安装中修复了它。

【讨论】:

    【解决方案2】:

    自 MySQL 5.7.5 以来,密码哈希发生了变化,因此许多客户端和最新的 MySQL 版本不再支持不安全的 4.1 之前的密码。

    为了使您的密码更安全,请按照Cannot connect to MySQL 4.1+ using old authentication中的步骤操作

    可以访问服务器:https://stackoverflow.com/a/1576473/1875965 检查您当前的配置和当前密码设置,查找并更改使用旧密码的用户

    没有访问服务器:https://stackoverflow.com/a/2901706/1875965 使用旧客户端连接服务器,更改密码并更新设置

    【讨论】:

      【解决方案3】:

      你的mysql是什么版本的?

      旧的密码哈希方法已被弃用。

      执行将密码与帐户行的密码列匹配的本机身份验证的插件。 mysql_native_password 插件基于本机密码散列方法实现身份验证。 mysql_old_password 插件基于旧的(4.1 之前)密码散列方法(现在已弃用)实现本机身份验证。

      您可以尝试传递插件选项,例如,

      mysql --default-auth=mysql_old_password -u XXXXXX -pYYYYYY -h domain.com
      

      参考:7.1.2 The Old Native Authentication Plugin

      【讨论】:

      • 如果您的 mysql 版本较新,这将不起作用。使用stackoverflow.com/questions/1575807/… 上的步骤重新配置您的密码(如果您无权访问 msyql 服务器,则第二个答案适用于支持旧版本 mysql 的客户端)
      猜你喜欢
      • 2017-10-15
      • 2019-02-23
      • 1970-01-01
      • 2019-02-09
      • 2018-07-03
      • 1970-01-01
      • 2017-04-16
      • 2017-08-05
      • 2018-05-06
      相关资源
      最近更新 更多