尝试向正在运行的服务器发送请求时,对MariaDB容器的访问被拒绝

ergxz8rk  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(134)

在Linux(Ubuntu 20.04)上测试新安装的SilverStripe。我的数据库容器是这样设置的:

...
services:
  db:
    image: mariadb:10
    env_file:
      - .env
    environment:
      MYSQL_ROOT_PASSWORD: ${SS_DATABASE_PASSWORD}
      MYSQL_PASSWORD: ${SS_DATABASE_PASSWORD}
      MYSQL_USER: ${SS_DATABASE_USERNAME}
      MYSQL_DATABASE: ${SS_DATABASE_NAME}
      MYSQL_TCP_PORT: ${SS_DATABASE_PORT}
      MYSQL_INITDB_SKIP_TZINFO: 0
...

而且我直接连接到容器也没有问题。但是,当我用php -S localhost:8000之类的命令运行服务器时,我得到了拒绝访问警告:

[Warning] mysqli::real_connect(): (HY000/1045): Access denied for user '<MYSQL_USER>'@'localhost' (using password: YES)

试图找出哪些设置不正确。

68bkxrlz

68bkxrlz1#

其中一个环境变量为空:

  • SS数据库名称
  • SS_数据库_用户名
  • SS_数据库_密码

这将导致无法创建用户。
另外,“boolean”变量是空的还是非空的,所以MYSQL_INITDB_SKIP_TZINFO: 0实际上是一个“true”,意味着跳过tz初始化。
MYSQL_TCP_PORT不是mariadb容器所考虑的变量。如果您想更改它,请使用command: --port $SS_DATABASE_PORT

相关问题