mysql - 如何从主机连接到在容器中运行的mysql

标签 mysql macos docker docker-machine

我正在使用 https://github.com/sameersbn/docker-mysql在带有 virtualbox 的 OSX 中使用 docker-machine 运行 mysql 容器。

我创建了一台新机器

docker-machine create --driver virtualbox mytest

IP是

docker-machine ip mytest
192.168.99.103

我这样运行容器:

docker run -p 3306:3306 --name mysql -d \
  -v /opt/mysql/data:/var/lib/mysql \
  -e 'DB_USER=sampleuser' -e 'DB_PASS=samplepass' -e 'DB_NAME=sampledb' -e 'DB_REMOTE_ROOT_NAME=root' -e 'DB_REMOTE_ROOT_PASS=samplerootpass' \
  sameersbn/mysql:latest

现在,当我尝试从我的主机连接到容器中的 mysql 时,我可以使用用户 sampleuser 而不是用户 root 进行连接。

▶ mysql -u root -p -h 192.168.99.103
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'192.168.99.1' (using password: YES)

192.168.99.1 是我本地笔记本电脑的 ip 地址

▶ ifconfig | grep "192"
    inet 192.168.99.1 netmask 0xffffff00 broadcast 192.168.99.255

最佳答案

默认情况下,root 只能从本地主机 127.0.0.1 和::1 进行访问,您需要特别允许从 192.168.99.1 或在用户设置中使用“%”的任何地方进行访问:参见此处 http://dev.mysql.com/doc/refman/5.5/en/default-privileges.html

关于mysql - 如何从主机连接到在容器中运行的mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34905765/

相关文章:

MySQL 比较、计数和排序

php mysql 查询不发送日期和时间类型 null 来插入

在 Mac 上编译 Unix 代码

MySql GROUP BY date_time 和 SUM 数量

macos - 在 Mac 上安装 Visual Studio Professional,只有社区会为我安装

c++ - OSX 10.11 上的 VTK 7 和 Qt5.6 OpenGL 渲染冲突

docker - Phoenix Framework - 用于开发和部署到 Kubernetes 的 docker 镜像

docker - 用于构建镜像的boot2docker工作流程

python - Dockerized Python Flask REST API 显示 "The page isn' t 正常工作

mysql - Eloquent laravel 有 raw join with where 子句