当前位置: 首页 > 面试题库 >

docker-compose中的“无法连接到本地MySQL服务器”

欧阳俊晖
2023-03-14
问题内容

我有MySQL的Laravel应用程序,我正在尝试使用docker-compose在Docker中运行它。但是,当应用尝试连接数据库时,它会抛出:

Connector.php 55行中的PDOException:SQLSTATE [HY000]
[2002]无法通过套接字’/var/run/mysqld/mysqld.sock’连接到本地MySQL服务器(2)

我的docker-compose.yml:

load_balancer:
image: tutum/haproxy
links:
    - web
ports:
    - "80:80"

cache:
    image: redis

db:
    image: mysql
    environment:
        MYSQL_ROOT_PASSWORD: Q1w2e3r4t5
        MYSQL_DATABASE: regappbase

web:
    image: andrewmclagan/nginx-hhvm
    links:
        - db
        - cache
    volumes: 
        - ./:/var/www
    environment:
        - APP_ENV=local
        - DB_DATABASE=regappbase
        - DB_PASSWORD=Q1w2e3r4t5
        - VIRTUAL_HOST=laravel.local

我的.env:

APP_ENV=production
APP_DEBUG=true
APP_KEY=SomeRandomString
APP_URL=http://laravel.local

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=regappbase
DB_USERNAME=root
DB_PASSWORD=Q1w2e3r4t5

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=laravel.local
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525

问题答案:

默认情况下,与“ localhost”的MySQL连接会尝试通过本地计算机上存在的套接字进行连接。您的DB_HOST应该是链接的容器名称“ db”。

从MYSQL文档:

在Unix上,MySQL程序特别对待主机名localhost,与其他基于网络的程序相比,它可能与您期望的不同。为了连接到本地主机,MySQL程序尝试使用Unix套接字文件连接到本地服务器。即使给
–port或-P选项指定端口号,也会发生这种情况。为确保客户端与本地服务器建立TCP / IP连接,请使用–host或-
h指定主机名值127.0.0.1,或本地服务器的IP地址或名称。您也可以使用–protocol =
TCP选项来显式指定连接协议,即使是本地主机也是如此。例如:



 类似资料:
  • 我使用docker查看了瓶装水的github MD文件,遇到了一个关于postgresql的问题 如果我运行我会得到错误 这是我的docker compose中postgres和psql的配置。yml文件 这是我的pg_hba。配置文件 我已经做了好几天了,任何形式的帮助都将不胜感激!非常感谢。

  • 我试图连接到mysql数据库从docker图像。然而,这是投掷错误。 下面是我正在使用的docker图像。https://hub.docker.com/_/mysql/ 下面是我用来运行docker映像的命令。 以下是命令的输出 如果我使用docker检查IP并ping该IP,则显示IP不可访问。 如果我尝试使用和我遇到以下错误。 无法加载身份验证插件“缓存\u sha2\u密码”。

  • 错误2002(HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地MySQL服务器(2“没有这样的文件或目录”) 我得用ctl-c来摆脱剧本。 套接字在/etc/mysql/debian.cnf中设置为/var/run/mysqld/mysqld.sock。在/etc/mysql/mariadb.conf.d/50-server.cnf中也设置为/var

  • 我有一个连接到mysql数据库的Spring Boot应用程序。如果我以经典的方式在本地运行它,它工作得很好。但当我尝试dockerise时,它-数据库成功启动,但应用程序却看不到数据库。 我的DockerFile: 我执行的内容: 首先,我构建我的service_img 然后执行docker-compose up。在日志中,我看到数据库启动日志,然后是应用程序启动日志,然后是错误: 有什么建议吗

  • 问题内容: 上传或提交页面时,我的网站上出现以下错误: mysql_real_escape_string()[function.mysql-real-escape- string]:无法通过套接字’/var/lib/mysql/mysql.sock’连接到本地MySQL服务器(2) 这到底是什么意思? 问题答案: 由于对该错误的调用引发了错误,因此它意味着您没有先调用该错误并将有效的数据库句柄传递

  • 问题内容: 我在Mac OS 10.8.5上安装了docker-machine 0.1.0和docker-compose 1.1.0。 Docker-machine正常运行,并且能够通过docker-machine ssh连接。 但是无法从docker-compose连接。 无法通过http + unix://var/run/docker.sock连接到Docker守护程序-它正在运行吗? 如果它