[英]Docker rails mysql is not connecting
我正在尝试将主机上的Rails应用程序连接到docker mysql映像。 但我收到此错误:
Authentication plugin 'caching_sha2_password' cannot be loaded: dlopen(/usr/local/Cellar/mysql/5.7.22/lib/plugin/caching_sha2_password.so, 2): image not found
我的Docker compose文件是这样的:
db:
image: mysql
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
adminer:
image: adminer
restart: always
ports:
- 8080:8080
我在我的database.yml中使用它:
default: &default
adapter: mysql2
encoding: utf8
host: 127.0.0.1
username: root
password: password
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
# socket: /Applications/MAMP/tmp/mysql/mysql.sock
development:
<<: *default
database: meal_plan_development
为了将Rails应用程序连接到mysql docker镜像,我还应该做什么。
正如@vstm指出的那样,这似乎与我使用PHP客户端时遇到的问题相同 。 创建容器后,您可以尝试将身份验证方案更改为可能会支持的一种,例如
docker exec <container_id> /bin/sh -c "mysql -uroot -ppassword
-e ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'PASSWORD'"
我对Docker不太熟悉,但是我相信您也可以在Dockerfile中添加类似的内容,以便在容器初始化期间更改身份验证方法:
RUN /bin/bash -c "mysql -uroot -ppassword
-e ALTER USER root@localhost IDENTIFIED WITH mysql_native_password BY 'PASSWORD'"
从版本8开始,MySQL使用caching_sha2_password
作为默认身份验证插件。 您可以通过在docker-compose.yml
文件中添加如下command
指令来覆盖它以使用mysql_native_password
:
db:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
adminer:
image: adminer
restart: always
ports:
- 8080:8080
我确定“主机127.0.0.1”是错误的。 可能应该是“主机数据库”
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.