我正try 在停靠容器中设置MySQL,但当我try 连接时,我想通过Unix套接字连接到它,我收到以下错误:

(web-YtJryoMm-py3.8) redacted@myhost testsocket % mysql -u root --socket=/Users/redacted/testsocket/mysql.sock
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/Users/redacted/testsocket/mysql.sock' (61)

如您所见,该位置中确实存在mysql.sock文件:

(web-YtJryoMm-py3.8) redacted@myhost testsocket % ls -la /Users/redacted/testsocket 
total 16
drwxr-xr-x    5 redacted  staff   160 Oct 19 10:08 .
drwxrwxrwx+ 159 redacted  staff  5088 Oct 19 10:18 ..
srwxrwxrwx@   1 redacted  staff     0 Oct 19 10:08 mysql.sock
-rwxrwxrwx@   1 redacted  staff     2 Oct 19 10:08 mysql.sock.lock
-rwxrwxrwx@   1 redacted  staff     2 Oct 19 10:08 mysqld.pid

出于测试目的,我对所有套接字文件进行了chmod修改,以确保权限不是问题.

当我try 通过TCP协议连接时,它工作正常:

(web-YtJryoMm-py3.8) redacted@myhost testsocket % mysql -u root --protocol=tcp
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 8.0.32 Source distribution

下面是我正在使用的docker-compose.yaml文件:

version: '3.9'

services:
  
  mysql:
    image: bitnami/mysql:8.0.32
    container_name: 'mysql'
    restart: always
    environment:
      - ALLOW_EMPTY_PASSWORD=yes
    volumes:
      - '~/volumes/mysql:/bitnami/mysql'
      - '~/testsocket:/opt/bitnami/mysql/tmp'
    ports:
      - '3306:3306'

networks:
  default:
    driver: bridge

我错过了什么吗?

推荐答案

Unix套接字仅适用于本地进程间通信,不适用于TCP.

因为您的MySQL Server运行在Docker容器内,所以它不是容器外部的本地进程.您不能使用Unix套接字连接到它,即使您已经映射了Docker容器的文件系统,以便您可以看到套接字文件.

您可以使用Unix套接字通过客户端进行连接,该客户端也运行在与MySQL Server进程相同的Docker容器中.

Mysql相关问答推荐

try 使用TypeORM创建新表时出现SQL语法错误

更新MySQL表中子记录的序号

如果WHERE语句包含所有列,唯一键顺序是否重要?

在MySQL中使用FIRST_VALUE()

获取连续11天未考勤的员工

将 GORM 与自定义连接表和外键结合使用

实体内约束的唯一增量 ID 生成

如何本地化 MySQL 表中的实体?

MySQL 在第一个匹配行后停止搜索 N 行(不是 LIMIT)

仅计算 DATEDIFF (MySQL) 中的工作日

Mysql,显示谁已经和没有 Select 退出巴士服务

为什么一个 10 位的电话号码不能存储在长度为 10 的整数中?

MYSQL除以零警告,奇怪的行为

MYSQL如何将虚拟列添加到现有表中

插入重复键查询以在每一行上进行自定义更新

MySQLi count(*) 总是返回 1

在 WHERE 子句中使用 CASE

MySQL:低基数/ Select 性列=如何索引?

让 MySQL 在 OSX 10.7 Lion 上运行

为什么 MySQL 自动增量会在插入失败时增加?