正在尝试docker mysql映像,但用户/密码无效

正在尝试docker mysql映像,但用户/密码无效,mysql,docker,Mysql,Docker,我有一个简单的docker设置,使用php7和mysql,都来自docker hub。到目前为止,设置还可以,一切都启动了,我可以访问我的应用程序。但是我无法让mysql连接为我工作。我甚至登录到这个盒子,尝试访问数据库,但失败了。有人知道吗 docker-compose.yml db: restart: always image: mysql/mysql-server:5.7 ports: - "3306:3306" environment: MYSQL_ROO

我有一个简单的docker设置,使用php7和mysql,都来自docker hub。到目前为止,设置还可以,一切都启动了,我可以访问我的应用程序。但是我无法让mysql连接为我工作。我甚至登录到这个盒子,尝试访问数据库,但失败了。有人知道吗

docker-compose.yml

db:
  restart: always
  image: mysql/mysql-server:5.7
  ports:
    - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_USER: myapp
    MYSQL_PASSWORD: myapp
    MYSQL_DATABASE: myapp
web:
  restart: always
  image: silintl/php7
  command: php -S 0.0.0.0:8000 -t /app/web
  links:
    - db
  ports:
    - "8000:8000"
  volumes:
    - ../:/app
正在尝试访问数据库

[bash]marcobehnke@Marcos-MacBook-Pro-2 ~ $ docker exec -it docker_db_1 bash

[root@7eff3007bb11 /]# mysql --user=myapp --password=myapp --host=localhost --port=3306 myapp
mysql: [Warning] Using a password on the command line interface can be insecure.

ERROR 1045 (28000): Access denied for user 'myapp'@'localhost' (using password: YES)
[root@7eff3007bb11 /]#
我错过了什么


编辑:看看我的github repo,这正是我使用的配置:

看起来你正在使用。应该是这样的:

version: '2'
services:
  db:
    restart: always
    image: mysql/mysql-server:5.7
    ports:
      - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: "root"
    MYSQL_USER: "myapp"
    MYSQL_PASSWORD: "myapp"
    MYSQL_DATABASE: "myapp"
  # ...

好像你在用这个。应该是这样的:

version: '2'
services:
  db:
    restart: always
    image: mysql/mysql-server:5.7
    ports:
      - "3306:3306"
  environment:
    MYSQL_ROOT_PASSWORD: "root"
    MYSQL_USER: "myapp"
    MYSQL_PASSWORD: "myapp"
    MYSQL_DATABASE: "myapp"
  # ...

好的,我换了一台不同的机器,试了试我的设置,它是现成的。我不知道这是怎么回事,但问题显然是我的机器:-)

好的,我换了一台不同的机器,尝试了我的设置,它是现成的。我不知道这是怎么回事,但问题显然是我的机器:-)

文档(您链接到的)表明两种语法都是正确的(使用冒号或等号);它给出了两者的例子,并明确地说“你可以使用数组或字典”。是的,但是你必须使用字符串。我尝试了您的解决方案,它产生了“无效类型,它应该是字符串”。我更改了它,但它对环境没有帮助:-MYSQL\u ROOT\u PASSWORD=ROOT-MYSQL\u USER=myapp-myapp\u PASSWORD=myapp-myapp\u DATABASE=myapp错误1045(28000):用户“myapp”@“localhost”的访问被拒绝(使用密码:YES)[root@7eff3007bb11 /]#我测试了答案的第一部分,并将其粘贴到docker-compose.yml文件中。然后启动它:
docker compose up
并连接到它:
docker exec-it mysql\u db\u 1 mysql--user=myapp--password=myapp
:-(我不明白。我复制/粘贴了你的解决方案,包括版本和服务。但它仍然失败
docker exec-it docker_db_1 mysql--user=myapp--password=myapp--host=localhost--port=3306 myapp mysql:[警告]在命令行界面上使用密码可能不安全。错误1045(28000):拒绝用户“myapp”@“localhost”的访问)(使用密码:YES)
-我讨厌它文档(您链接到的文档)建议其中任何一种语法都是正确的(使用冒号或等号);它给出了这两种语法的示例,并明确表示“您可以使用数组或字典”。是的,但是您必须使用字符串。我尝试了您的解决方案,结果“无效类型,它应该是字符串”。我更改了它,但它对环境没有帮助:-MYSQL\u ROOT\u PASSWORD=ROOT-MYSQL\u USER=myapp-MYSQL\u PASSWORD=myapp-MYSQL\u DATABASE=myapp错误1045(28000):用户“myapp”@“localhost”的访问被拒绝(使用密码:YES)[root@7eff3007bb11 /]#我测试了答案的第一部分,并将其粘贴到docker-compose.yml文件中。然后启动它:
docker compose up
并连接到它:
docker exec-it mysql\u db\u 1 mysql--user=myapp--password=myapp
:-(我不明白。我复制/粘贴了你的解决方案,包括版本和服务。但它仍然失败
docker exec-it docker_db_1 mysql--user=myapp--password=myapp--host=localhost--port=3306 myapp mysql:[警告]在命令行界面上使用密码可能不安全。错误1045(28000):拒绝用户“myapp”@“localhost”的访问)(使用密码:是)
-我讨厌你进行了常规调试,例如,你能以root用户身份连接吗?此外,还有一些详细信息-值得考虑“MySQL init完成前无连接”和“对现有数据库的使用”下的内容",因为其中任何一个都可能会影响您的系统。是的,尝试过,但root也没有连接,我等了很长时间才让mysql初始化,但仍然无法连接,这是一个新的数据库好的,这很有用。另外,您有没有查看docker容器日志以获取任何线索?在容器日志中没有任何内容,只有mysql日志中的内容是
2016-09-01T09:03:38.200658Z 3[注意]用户'myapp'@'localhost'的访问被拒绝(使用密码:YES)
您是否进行了常规调试,例如,您是否可以作为root用户进行连接?此外,还有一些详细信息-值得考虑在“mysql init完成前无连接”和“针对现有数据库的使用",因为其中任何一个都可能会影响您的系统。是的,尝试过,但root也没有连接,我等了很长时间才让mysql初始化,但仍然无法连接,这是一个新的数据库好的,这很有用。另外,您有没有查看docker容器日志以获取任何线索?在容器日志中没有任何内容,只有mysql日志中的内容是
2016-09-01T09:03:38.200658Z 3[注意]用户'myapp'@'localhost'的访问被拒绝(使用密码:YES)