简体   繁体   English

Docker MYSQL [2003] 无法连接到 MySQL 服务器(111 连接被拒绝)

[英]Docker MYSQL [2003] Can't connect to MySQL server (111 Connection refused)

I'd like to connect python3 to mysql on Docker Container (I use ubuntu 18.04)我想将 python3 连接到 Docker 容器上的 mysql (我使用 ubuntu 18.04)

Here is docker-compose.yml这是 docker-compose.yml

version: '3'

services:
  # MySQL
  db:
    image: mysql:5.7
    container_name: mysql_host
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test_database
      MYSQL_USER: user
      MYSQL_PASSWORD: pass
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 
    volumes:
    - ./db/data:/var/lib/mysql
    - ./db/initdb.d:/docker-entrypoint-initdb.d
    - ./log/mysql:/var/log/mysql
    ports:
    - 3306:3306
    networks:
    - python-network 

  python3:
    restart: always
    build:
      context: ./python
    container_name: "python3"
    working_dir: "/root/src"
    tty: true
    volumes:
      - ./python:/root/src
    links:
      - db 
networks:
  python-network:
    driver: bridge

And then, my.cnf is following然后,my.cnf 正在关注

# bind-address=127.0.0.1
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4
user = user
password = pass

I check containers is runnning.我检查容器是否正在运行。

user@ubuntu:/srv/docker/mysql$ sudo docker-compose ps
   Name                 Command              State               Ports            
----------------------------------------------------------------------------------
mysql_host   docker-entrypoint.sh mysql      Up      0.0.0.0:3306->3306/tcp,:::3306->3306/tcp,33060/tcp       
python3      python3                         Up    

And then I see the ip address of mysql by executing ' hostname -i' on mysql container.然后我通过在 mysql 容器上执行 'hostname -i' 看到 mysql 的 ip 地址。

And I add the ip address to following python script.我将 ip 地址添加到以下 python 脚本中。

With following script, python3 try to connect to mysql.使用以下脚本,python3 尝试连接到 mysql。

import mysql.connector


## create connection
if __name__=="__main__":
    conn = mysql.connector.connect(
        host='192.168.64.2',
        port='3306',
        user='docker',
        password='docker',
        database='test_database')

    print(conn.is_connected())

But error occurs但是发生错误

~/src # python3 main.py
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/mysql/connector/network.py", line 574, in open_connection
    self.sock.connect(sockaddr)
ConnectionRefusedError: [Errno 111] Connection refused

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "main.py", line 11, in <module>
    database='test_database')
  File "/usr/local/lib/python3.7/site-packages/mysql/connector/__init__.py", line 273, in connect
    return MySQLConnection(*args, **kwargs)
  File "/usr/local/lib/python3.7/site-packages/mysql/connector/connection.py", line 107, in __init__
    self.connect(**kwargs)
  File "/usr/local/lib/python3.7/site-packages/mysql/connector/abstracts.py", line 1003, in connect
    self._open_connection()
  File "/usr/local/lib/python3.7/site-packages/mysql/connector/connection.py", line 350, in _open_connection
    self._socket.open_connection()
  File "/usr/local/lib/python3.7/site-packages/mysql/connector/network.py", line 580, in open_connection
    _strioerror(err),
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '192.168.64.2:3306' (111 Connection refused)

So could you tell me how to solve it.那你能告诉我如何解决它。

Your mysql container is running on python-network network.您的mysql容器正在python-network网络上运行。 However your python3 container is not running on python-network .但是,您的python3容器未在python-network上运行。 Add python-network to python3 container,python-network添加到python3容器,

python3:
    restart: always
    build:
      context: ./python
    container_name: "python3"
    working_dir: "/root/src"
    tty: true
    volumes:
      - ./python:/root/src
    links:
      - db 
    networks:
      - python-network

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 mysql.connector.errors.InterfaceError:2003:无法连接到“127.0.0.1:3306”上的 MySQL 服务器(111 连接被拒绝) - mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on '127.0.0.1:3306' (111 Connection refused) PyMySQL:- OperationalError: (2003, “无法连接到‘本地主机’上的 MySQL 服务器([Errno 111] 连接被拒绝)”) - PyMySQL:- OperationalError: (2003, "Can't connect to MySQL server on 'localhost' ([Errno 111] Connection refused)") 2003:无法连接到“192.168.0.14:3306”上的 MySQL 服务器(111 连接被拒绝) - 2003: Can't connect to MySQL server on '192.168.0.14:3306' (111 Connection refused) Mariadb docker容器无法使用Python连接到主机上的MySQL服务器(111连接被拒绝) - Mariadb docker container Can't connect to MySQL server on host (111 Connection refused) with Python 操作错误(2003,“无法连接到&#39;127.3.138.130&#39;(111)上的MySQL服务器”) - Operational Error(2003, “Can't connect to MySQL server on '127.3.138.130' (111)”) mysql.connector.errors.DatabaseError: 2003 (HY000): 无法连接到“127.0.0.1”上的 MySQL 服务器 (111) - mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111) django.db.utils.OperationalError: (2003, “无法连接到&#39;127.0.0.1&#39; (111) 上的 MySQL 服务器” - django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' (111)" OperationalError :( OperationalError)(2003,“无法连接到'192.168.129.139上的MySQL服务器'(111)”无无 - OperationalError: (OperationalError) (2003, “Can't connect to MySQL server on '192.168.129.139' (111)”) None None mysql.connector.errors.DatabaseError:2003(HY000):无法连接到“本地主机”(111)上的 MySQL 服务器。 Flask 应用程序 - mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on 'localhost' (111). Flask app Mysql([Errno 111] 连接被拒绝)”) - Mysql ([Errno 111] Connection refused)")
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM