Rails 生产,trilogy 无法连接远程数据库,但 mysql2 可以

问题描述 投票:0回答:1

尝试将我们的生产 Rails 7.1.3 服务器从

mysql2
切换到
trilogy
以连接到两个数据库:

  • 我们的远程 mysql 数据库位于
    DB_IP_ADDR
    ,位于单独的 DO Droplet
  • 我们的 localsolid_cache mysql 数据库在我们的网络服务器上 DO Droplet 位于
    PRODUCTION_IP_ADDR

由于 Trilogy 无法使用 mysql 8 的已知问题,我已经在远程 mysql 服务器和生产(本地主机)缓存 mysql 服务器上将

caching_sha2_password
恢复为使用
mysql
:
mysql_native_password

# on DB_IP_ADDR

mysql> ALTER USER 'us'@'PRODUCTION_IP_ADDR' IDENTIFIED WITH mysql_native_password BY 'password';
mysql> FLUSH PRIVILEGES;
我们的
# on PRODUCTION_IP_ADDR mysql> ALTER USER 'us'@'localhost' IDENTIFIED WITH mysql_native_password BY 'cache_password'; mysql> FLUSH PRIVILEGES;

config/database.yml

本地
缓存数据库与trilogy连接良好,但

远程数据库连接失败并显示 production: primary: adapter: trilogy database: remote_production_db host: DB_IP_ADDR username: us password: password socket: /var/run/mysqld/mysqld.sock encoding: utf8 cache: adapter: trilogy database: our_solid_cache_db host: 127.0.0.1 username: us password: cache_password socket: /var/run/mysqld/mysqld.sock endoding: utf8 migrations_paths: "db/cache/migrate"

我已经仔细检查了密码,它是正确的:如果我将
ActiveRecord::DatabaseConnectionError: There is an issue connecting to your database with your username/password, username: us. (ActiveRecord::DatabaseConnectionError)

Please check your database configuration to ensure the username/password are valid.
...

Caused by:
Trilogy::BaseConnectionError: 1045: Access denied for user 'us'@'localhost' (using password: YES) (Trilogy::BaseConnectionError)
切换回

database.yml

 而不更改任何其他内容,则两个数据库连接都正常。
我注意到错误消息将尝试的用户连接标识为 
adapter: mysql2

,但请求不是来自

'us'@'localhost'

,而是来自 
localhost
Trilogy 连接到远程数据库或识别远程用户是否需要特殊的东西?

想通了。
mysql ruby-on-rails puma
1个回答
0
投票
远程主机需要

PRODUCTION_IP_ADDR

IP 或

host

,但不能同时需要两者。 
socket
 参数的存在使其假定它处于 
socket
我删除了遥控器
localhost

并且连接正常。

© www.soinside.com 2019 - 2024. All rights reserved.