2016-12-12 13:56:50 4162次浏览 8条回答 0 悬赏 100 金钱
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=127.0.0.1;dbname=data',
'username' => 'root',
'password' => 'root',
'charset' => 'utf8mb4',

为什么 这样子配置会出事服务器连接不上数据库的状态 ?

Database Exceptionyii\db\Exception

SQLSTATE[HY000] [2002] Connection refusedCaused by: PDOException

SQLSTATE[HY000] [2002] Connection refused
补充于 2016-12-12 14:06

用起来方便

补充于 2016-12-13 18:12

不能用 算了 我自装一个虚拟机了

最佳答案

  • dingaifeng 发布于 2016-12-15 16:46 举报

    这是因为docker里面并没有安装数据库,127.0.0.1是docker容器里面的地址,使用这样的配置信息会找不到数据库,你需要填写你本机的ip地址,访问你本机的数据库,你可以使用ifconfig获取你本地的IP地址,假如是10.1.192.21,然后在配置文件中这样写
    'dsn' => 'mysql:host=10.1.192.21;dbname=data',
    'username' => 'root',
    'password' => 'root',
    'charset' => 'utf8mb4',
    这样docker容器里面的网站就可以访问你本机的数据库了

    1 条回复
    回复于 2017-11-27 18:04 回复

    你好,我也有这个问题,但是改成本机的IP还是没有效果

    觉得很赞
  • 回答于 2016-12-12 14:04 举报

    没有,干嘛要用这个?

  • 回答于 2016-12-12 15:38 举报

    你数据库和你代码在一个docker里?用IP试试

  • 回答于 2017-10-30 21:49 举报

    host改为mysql的容器名称即可。

    觉得很赞
  • 回答于 2018-08-13 19:07 举报

    可以试试啊

  • 回答于 2019-03-11 17:30 举报

    host = mysql

    觉得很赞
  • 回答于 2021-06-13 17:42 举报

    一般都是 172 开头

  • 回答于 2021-11-24 16:24 举报
    services:
      mysql:
        image: "mysql:5.7.31"
        container_name: app_mysql
        restart: always
        ports:
          - '3306'
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - ./mysql/sql:/docker-entrypoint-initdb.d
          - ../../database/mysql:/var/lib/mysql
          - ../../logs/mysql:/var/log/mysql
        environment:
          MYSQL_ROOT_PASSWORD: 123456
        command: --sql-mode="" --character-set-server=utf8mb4
          --collation-server=utf8mb4_unicode_ci # --innodb-buffer-pool-size=64M
        networks:
          network:
            aliases:
              - com.app.mysql
              
    web:
        #build: .
        image: "php:7.4-apache"
        container_name: app_web
        restart: always
        ports:
          - "80:80"
          #- "443:443"
        volumes:
          - /etc/localtime:/etc/localtime:ro
          - ../../wwwroot:/app
        networks:
          network:
            aliases:
              - com.app.web
        depends_on:
          - mysql
    
    networks:
      network:
        driver: bridge```
    
    

    两个容器处于同一网络,可以使用以下别名:
    'class' => 'yii\db\Connection',
    'dsn' => 'mysql:host=com.app.mysql;dbname=data',
    'username' => 'root',
    'password' => '123456',
    'charset' => 'utf8mb4',`

您需要登录后才可以回答。登录 | 立即注册
alex.kevin
经理

alex.kevin

注册时间:2015-05-20
最后登录:2022-08-20
在线时长:15小时23分
  • 粉丝4
  • 金钱1185
  • 威望0
  • 积分1335

热门问题