有什么方法可以从主机连接docker mysql吗?

时间:2019-12-19 12:43:37

标签: mysql docker

我创建了mysql docker容器

docker run -p 13306:3306 -d -e MYSQL_ROOT_PASSWORD="pass" -e MYSQL_DATABASE="db" --name mysql mysql:5.6.46

我试图连接到mysql

mysql -u root -p -h localhost -P 13306

但是我无法连接到mysql。

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

出于某种原因,我必须这样连接。不使用docker exec -i -t mysql bash

1 个答案:

答案 0 :(得分:0)

您应该尝试扩大问题范围,并添加有关收到的错误的更多信息。

在我的本地开发环境中,为了连接到我的MySQL数据库,我给它提供了一个静态IP地址。为了简化起见,我倾向于使用docker-compose而不是直接从docker命令运行。这是mariaDB容器的docker-compose.yaml文件的样子:

version: '3.7'

services:
  maria:
    container_name: maria
    image: mariadb:10.4
    restart: always
    environment:
     - MYSQL_ROOT_PASSWORD=password
     - MYSQL_USER=user
     - MYSQL_PASSWORD=user_password
    volumes:
     - ./maria:/var/lib/mysql
    networks:
      static:
        ipv4_address: 172.30.0.10

networks:
  static:
    ipam:
      driver: default
      config:
       - subnet: 172.30.0.0/16

运行 docker-compose up 命令后,我现在可以使用命令

连接到mysql shell。
mysql -uuser -puser_password -h 172.30.0.10

如果您正在运行linux,还可以在/ etc / hosts文件中添加一行,例如: 172.30.0.10 mysql

然后您可以连接命令

mysql -uuser -puser_password -h mysql

我非常有信心您可以通过一个纯粹的docker命令获得相同的结果,但是使用docker-compose似乎更容易。无论如何,我希望对您有帮助