连接到docker里面的mysql

时间:2016-04-28 02:42:09

标签: mysql wordpress docker docker-compose docker-container

我正在使用来自docker hub的official MySQL image并公开端口3333:3306以从外部进行连接。

我知道我必须将import unittest import re def isDigit(s): return re.match(r'[\d.]+', s) def stringParse(input): input = [i.strip() for i in input.split()] input = filter(lambda x: isDigit(x), input) input = map(lambda x: float(x), input) return sum(input) class TestIntegerMethods(unittest.TestCase): def test_inches(self): self.assertEqual(stringParse("12 inches makes 1 foot"), 13.0) def test_pi(self): self.assertTrue(stringParse('pi is 3.14'), 3.14) if __name__ == '__main__': unittest.main() 内的绑定IP更改为此容器的IP并为用户授予权限,例如:/etc/mysql/my.cnf,以便我可以通过以下方式连接到此容器:

GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'container_ip';

但我收到了这个错误

mysql -h container_ip -u root -p

顺便说一句,我也尝试从另一个容器中的WordPress连接,但它无法建立连接。这是ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

docker-compose.yml
  1. 我用这个mysql容器犯了什么错误?我无法连接到它。
  2. 每次version: '2' services: mysqldb: image: mysql:5.6 environment: MYSQL_ROOT_PASSWORD: password volumes: - ./mysql-data:/var/lib/mysql - ./mysql-import-data:/import-data ports: - "3333:3306" blog: image: webdevops/php-nginx:ubuntu-14.04 environment: WEB_DOCUMENT_ROOT: /usr/share/nginx/html volumes: - ./blog:/usr/share/nginx/html ports: - "8080:80" depends_on: - mysqldb 时,容器的IP都可能会更改。我该如何配置?

1 个答案:

答案 0 :(得分:0)

嗯,我有点困惑。从主机操作系统的角度来看,docker容器绑定到一个或多个网络接口。在您的撰写文件中,您将端口3333暴露给主机。这就是你必须连接的东西。

另外,您需要使用IP地址,否则mysql客户端将尝试连接unix套接字。

mysql -h 127.0.0.1 --port 3333 -u root -p

如果您尝试从博客容器内部进行连接,则可以使用mysqldb作为3306端口的主机。