mysql - pgloader - 无法以用户 "localhost": Condition QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION was signalled 的身份在 "root"(端口 3306)连接到 mysql

标签 mysql ruby-on-rails postgresql pgloader

我正在尝试将我的 rails 应用程序从 mysql 迁移到 postgres。由于我们已经运行了应用程序,所以我正在使用 pgloader 将 mysql 数据移动到 postgres 数据库。但是当我这样做时

pgloader mysql://root:root_password@127.0.0.1/mysql_database postgresql://postgres_user:postgres_pass@127.0.0.1/postgres_database

我收到错误 - 无法以用户“root”身份在“127.0.0.1”(端口 3306)连接到 mysql:条件 QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION 已发出信号。 不过,我可以轻松地从终端登录到 mysql。
提前致谢。

最佳答案

问题是目前 pgloader 不支持 caching_sha2_password身份验证插件,这是 MySQL 8 的默认设置,而较旧的 MySQL 版本使用 mysql_native_password插入。对应issue在Github上开启.
基于 this comment ,这里的解决方法是编辑 my.cnf (如果您不知道它在哪里,请查看 here )和 [mysqld]部分添加

default-authentication-plugin=mysql_native_password
然后重启你的 MySQL 服务器并执行:
ALTER USER 'youruser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yourpassword';
之后,错误必须消失。

关于mysql - pgloader - 无法以用户 "localhost": Condition QMYND:MYSQL-UNSUPPORTED-AUTHENTICATION was signalled 的身份在 "root"(端口 3306)连接到 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56542036/

相关文章:

mysql - 使用存储过程插入多个值

javascript - Rails 3.1 http streaming - js 在头部或 body 底部?

ruby-on-rails - Rails 将 schema.rb 时间戳更改为日期时间

postgresql - 从项目中查找下一行和前一行

mysql - 启动 ApplicationContext 时出错。要显示自动配置报告,请在启用 'debug' 的情况下重新运行应用程序。使用netbeans/Spring

php - 使用 foreach 分解字符串并插入多行太慢

mysql - 多个 Rails 引擎与一个 MySQL 服务器通信,用于水平扩展应用程序服务器

ruby-on-rails - 带有 ElasticSearch 的 Searchkick 返回 "Faraday::ConnectionFailed: execution expired"

php - 找不到 ubuntu php_pgsql.dll

MySQL 创建小写表