Sequel Pro与Docker中的Mysql

fre*_*ost 15 mysql sequelpro docker

我用docker-compose构建了2个docker容器.我在Mac上使用Docker,没有boot2docker.

version: '2'
    services:
        drupal-web:
            image: drupal:latest
        ports:
            - "8080:80"
    depends_on:
            - mysql-server
    links:
            - mysql-server:mysql
    mysql-server:
        image: mysql
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_ROOT_PASSWORD: root
        MYSQL_USER: drupal
        MYSQL_PASSWORD: drupal
Run Code Online (Sandbox Code Playgroud)

一切正常.我成功安装了Drupal.

问题是:我想将SequelPro连接到我的数据库,但我没有连接到mysql容器.我是码头初学者.谢谢你的帮助Micha

Eug*_*yer 31

您忘记将数据库端口暴露给主机,因此只需添加即可

mysql-server:
    image: mysql
    ports: 
      - "3306:3306"
    environment:
        MYSQL_ROOT_PASSWORD: root
        MYSQL_DATABASE: drupal
        MYSQL_USER: drupal
        MYSQL_PASSWORD: drupal
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令连接到Sequel中的数据库:

user: root
password: root
host: localhost
port: 3306
Run Code Online (Sandbox Code Playgroud)

如果您已经运行了本地mysql数据库,请更改端口

ports: 
  - "4306:3306"
Run Code Online (Sandbox Code Playgroud)

然后连接到端口4306而不是3306.请注意,从drupal容器中,您仍将使用3306

  • 尝试连接时,我收到“MySQL 说:无法加载身份验证插件‘caching_sha2_password’:dlopen(/usr/local/lib/plugin/caching_sha2_password.so, 2): image not found” (4认同)

小智 9

将主机端口4306(或任何其他可用端口)映射到docker mysql 3306,如:

mysql-server:
        image: mysql
    environment:
        MYSQL_DATABASE: drupal
        MYSQL_ROOT_PASSWORD: root
        MYSQL_USER: drupal
        MYSQL_PASSWORD: drupal
    ports:
      - "4306:3306"
Run Code Online (Sandbox Code Playgroud)

您应该能够使用127.0.0.1:4306连接到docker mysql

mysql -u drupal -h 127.0.0.1 -P 4306 -p
Run Code Online (Sandbox Code Playgroud)


chi*_*ona -1

应该看起来更像这样:

version: '2'
services:
    mysql-server:
        image: mysql
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: drupal
            MYSQL_USER: drupal
            MYSQL_PASSWORD: drupal

    drupal-web:
        image: drupal:latest
        ports:
            - "8080:80"
        depends_on:
            - mysql-server
        links:
            - mysql-server:mysql-server
        environment:
            MYSQL_DATABASE: drupal
            MYSQL_USER: drupal
            MYSQL_PASSWORD: drupal
Run Code Online (Sandbox Code Playgroud)

(我不确定在全局级别上定义环境变量是否有效,也许知道的人可以在这里纠正我的答案并简化它)

如您所见,您有 2 个服务:mysql-server 和 drupal-web。Drupal-web 链接您的数据库服务。这两个服务都有自己的环境变量。