macOS 通过 MacPorts 正确安装 MySQL 同时解决无法连接问题
如果你通过
sudo port install命令正常安装了 MySQL,再通过sudo port load命令启动了 MySQL Server,此刻却发现使用 Navicat 之类的 GUI 软件无法连接,始终返回无法连接到 127.0.0.1 服务器。这是一个小坑,因为他默认使用了 Sock 套接字连接方式。
1. 直接使用套接字
如果你并不在意客户端如何连接 MySQL,你可以直接使用套接字的方式。这里以 Navicat 为例:

很简单,在 Navicat 的高级选项中勾选 使用套接字文件,填写:/opt/local/var/run/mysql57/mysqld.sock 路径即可(版本不同请将中间的 57 修改为你所安装的版本)
当然,你 仍然 需要回到顶部的常规页中 输入密码
为什么是这个路径?
首先我们来看看安装成功后的提示:
On activation if no
/opt/local/etc/mysql57/my.cnffile exists one will be created
which loads/opt/local/etc/mysql57/macports-default.cnf.
If a/opt/local/etc/mysql57/my.cnffile exists MacPorts does not
touch it and any changes you make to/opt/local/etc/mysql57/my.cnf
will be preserved (e.g., during port upgrades, deactivations or activations).
/opt/local/etc/mysql57/my.cnfis a good place to customize your mysql57 installation.
翻译:
在激活时如果不存在
/opt/local/etc/mysql57/my.cnf文件,将创建一个加载/opt/local/etc/mysql57/macports-default.cnf文件的默认文件(也就是默认的my.cnf)。
MacPorts 不会修改已存在的/opt/local/etc/mysql57/my.cnf文件。你对/opt/local/etc/mysql57/my.cnf修改的任何配置都会被保留(即便是使用port命令更新 MySQL、停用或激活)。
总的来说,通过/opt/local/etc/mysql57/my.cnf进行配置就行啦。
在安装后未做任何配置的情况下,my.cnf 文件里仅有一句 包含(加载) macports-default.cnf 的语句:
# 注意此处的 !include 并非是不包含(不加载)的意思
!include /opt/local/etc/mysql57/macports-default.cnf
我们再看看 macports-default.cnf 文件:
[mysqld]
# skip-networking so multiple mysql server ports can be loaded without each competing for port 3306.
# skip-networking 用于加载多个 mysql 服务器端口,防止每个服务器都去使用 3306(这里指避免端口冲突)
skip-networking
回到路径问题,在没有做其它配置的情况下,因为 macports-default.cnf 中默认使用了套接字,即 skip-networking,然后在安装阶段会根据版本创建一个 mysql[Version] 的文件夹在 /opt/local/var/run 下,例如 /opt/local/var/run/mysql57
而 mysqld 进程,即 MySQL Server 启动后会在该目录下写入一个 mysqld.sock.lock 文件
当然还有 mysqld.sock,不过通过 Finder 是看不到的。所以这里连接这个 mysqld.sock 文件就行了。
因为套接字适用于本机连接,如果数据库不需要局域网或外网访问,直接使用套接字也是一个不错的方式。
2. 使用传统 TCP/IP 连接
传统 TCP/IP 也就是 IP:Port 的方式了,即默认的 127.0.0.1:3306
通过上方使用套接字连接,我们了解到其实 my.cnf 文件是对 macports-default.cnf 文件的覆写(因为 !include 写在最顶部)
所以解决方法非常简单,只需要在 my.cnf 中加入下方配置即可:
# Use default MacPorts settings
!include /opt/local/etc/mysql57/macports-default.cnf[mysqld]
# 覆盖原有配置
skip-networking = OFF
# 自定义端口,如不配置将使用默认 3306
port = 3306
保存后 unload 再 load MySQL 服务即可
3. 初始化数据库以及启动异常处理
如果你通过 port 重新安装过 MySQL,且手动删除过下方这三个目录里的 mysql[Version] 相关文件夹,你可能会遇到一些问题而需要重新初始化数据库
/opt/local/var/db/opt/local/var/log/opt/local/var/run
老生常谈的问题,数据无价,注意备份!备份!备份!
此处仍然以 MySQL 5.7 版本举例,在确保备份以及可以重新初始化 的情况下,首先停止 MySQL 服务:
sudo port unload mysql57-server
然后删除这些目录:
/opt/local/var/db/mysql57/opt/local/var/db/mysql57-files/opt/local/var/db/mysql57-keyring/opt/local/var/log/mysql57/opt/local/var/run/mysql57
开始初始化工作,其中部分目录需要手动创建,这些目录如果不存在会导致启动失败(当然还需要将所有者赋予 _mysql):
sudo mkdir /opt/local/var/db/mysql57-files
sudo chown _mysql:_mysql /opt/local/var/db/mysql57-files
sudo mkdir /opt/local/var/db/mysql57-keyring
sudo chown _mysql:_mysql /opt/local/var/db/mysql57-keyring
sudo mkdir /opt/local/var/run/mysql57
sudo chown _mysql:_mysql /opt/local/var/run/mysql57
这里建议 my.cnf 参考如下配置,其功能是打开慢查询日志写入功能以及错误日志的路径指定:
# Use default MacPorts settings
!include /opt/local/etc/mysql57/macports-default.cnf[mysqld]
skip-networking = OFF
port = 3306# Slow query config
slow_query_log = ON
slow_query_log_file = /opt/local/var/log/mysql57/slow.log
long_query_time = 1
log_error_verbosity = 2# Error log
log_error = /opt/local/var/log/mysql57/mysqld.log
如果不配置日志相关路径,则错误日志等文件将会写入到同数据 /opt/local/var/db/mysql57 目录下
所以这里我们还需要手动创建一下日志目录:
sudo mkdir /opt/local/var/log/mysql57
sudo chown _mysql:_mysql /opt/local/var/log/mysql57
目录准备完成后就可以初始化数据库了:
sudo /opt/local/lib/mysql57/bin/mysqld --initialize --user=_mysql
sudo port load mysql57-server
如果版本一致,应该只有这么一句提示:
---> Loading startupitem 'mysql57-server' for mysql57-server
如果你参考了我上方的 my.cnf 配置,那么 获取初始化密码 的命令也是一样的:
sudo cat /opt/local/var/log/mysql57/mysqld.log

最后使用 mysql 命令连接数据库后修改密码即可:
mysql -uroot -p
# 回车后粘贴上方获取的密码连接到数据库
在 MySQL 命令行中执行:
# 将 123456 修改为你需要设置的密码
set password = password('123456');# 如需开放来源连接请执行下方两句,否则无需执行
use mysql;
update user set host='%' where user='root';
好了,“导航猫”也能跟以前一样连接了

相关文章:
macOS 通过 MacPorts 正确安装 MySQL 同时解决无法连接问题
如果你通过 sudo port install 命令正常安装了 MySQL,再通过 sudo port load 命令启动了 MySQL Server,此刻却发现使用 Navicat 之类的 GUI 软件无法连接,始终返回无法连接到 127.0.0.1 服务器。这是一个小坑,因为他默认使用了 So…...
Semi-supervised Open-World Object Detection
Semi-supervised Open-World Object Detection 摘要1 介绍2.准备工作提出的SS-OWOD问题设置2.1 基础架构3 方法3.1整体架构摘要 传统的开放世界对象检测(OWOD)问题设置首先区分已知和未知类别,然后在后续任务中引入标签时逐步学习未知对象。然而,当前的OWOD公式在增量学习…...
C语言实现射击小游戏
以下是一个简单的C语言射击小游戏的实现示例。这个游戏中,玩家控制一个飞船,敌方飞船会随机出现并向玩家移动。如果玩家的飞船与敌方飞船相撞,玩家就失去一条生命,代码如下: #include <stdio.h> #include <s…...
c++11 标准模板(STL)本地化库 - std::islower(std::locale) 检查字符是否被本地环境分类为小写
本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析,以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 检查字符是否被本地环境分类为小写 std::islower(std::locale) template&…...
粘度指数改进剂市场需求增长 为润滑油添加剂细分产品
粘度指数改进剂市场需求增长 为润滑油添加剂细分产品 粘度指数改进剂是一种油溶性高分子聚合物,主要用于提高润滑油粘度以及粘度指数。粘度指数改进剂具有稠化能力强、抗磨性好、热稳定性好等优势,可添加于液压油、内燃机油以及齿轮油等油品中。 …...
LabVIEW柴油机安保监控系统
LabVIEW柴油机安保监控系统 随着航运业的快速发展,确保船舶柴油机的安全稳定运行变得尤为重要。船舶柴油机故障不仅会导致重大的经济损失,还可能危及人员安全和环境。设计并开发了一套基于LabVIEW平台的柴油机安保监控系统,旨在通过实时监控…...
实测国内AI大模型问答效果
随着ChatGPT热度的攀升,越来越多的公司也相继推出了自己的AI大模型。按照github工程awesome-LLMs-In-China所列举的,现如今国内AI大模型已达243个,比较著名的有文心一言、通义千问等。各大应用也开始内置AI玩法,如抖音的AI特效。下…...
不得不等待的无奈 -《葡萄成熟时》
恋上一个人便是撒下一颗葡萄种子,你可能会坚持,但不一定会结果,收获(在一起)。 更有可能得到的是枯枝烂叶(ta的离开)。 就算你再努力,再用心去栽培(为ta付出࿰…...
【Python】Python中装饰器和魔法方法的区别
在Python中,装饰器(Decorators)和魔法方法(Magic Methods)是两种不同的高级特性,分别服务于不同的目的。 装饰器 (Decorators) 装饰器是一种强大的工具,它可以修改或增强函数、方法或类的行为…...
【React】创建你的第一个React组件
要使用React创建你的第一个组件,首先确保你已经安装了Node.js和npm(Node包管理器)。然后,你可以通过npm安装Create React App这个官方支持的脚手架工具来快速生成一个新的React应用项目,该项目包含了React、ReactDOM、…...
五分钟搞懂MySQL索引下推
什么是索引下推 索引下推(Index Condition Pushdown,简称ICP),是MySQL5.6版本的新特性,它能减少回表查询次数,提高查询效率。 索引下推优化的原理 我们先简单了解一下MySQL大概的架构: MySQL服务层负责SQL语法解析、…...
【数据库】SQL如何添加数据
在SQL中,您可以使用INSERT INTO语句来添加数据到数据库表中。以下是一些基本的示例和解释: 1.插入完整行数据: 如果您想为表中的每一列都插入数据,那么可以不必指定列名。但是,您需要为每一列都提供数据,并…...
ClickHouse01-什么是ClickHouse
什么是ClickHouse? 关于发展历史存在的优势与劣势什么是它风靡的原因? 什么是ClickHouse? 官方给出的回答是,它是一个高性能、列式存储、基于SQL、供在线分析处理的数据库管理系统 当然这边不得不提到OLAP(Online Analytical Pr…...
使用Docker搭建Nascab
使用Docker来部署Nascab能够让这个过程变得更加灵活和便捷,因为Docker可以在隔离的环境中运行应用程序,简化了部署和配置的复杂性。 使用Docker CLI部署Nascab docker run -d \ --name nascab \ -p 18080:80 \ -p 18443:443 \ -p 18090:90 \ -p 18021:…...
Elasticsearch8.x版本Java客户端Elasticsearch Java API 如何并发修改
前言 并发控制,一般有两种方案,悲观锁和乐观锁,其中悲观锁是默认每次更新操作肯定会冲突,所以每次操作都要先获取锁,操作完毕再释放锁,适用于写比较多的场景。而乐观锁是默认每次更新操作都不会冲突&#…...
Docker 安装 Skywalking以及UI界面
关于Skywalking 在现代分布式系统架构中,应用性能监控(Application Performance Monitoring, APM)扮演着至关重要的角色。本文将聚焦于一款备受瞩目的开源APM工具——Apache Skywalking,通过对其功能特性和工作原理的详细介绍&am…...
mysql 空间查询 多边形内的点
数据库查询 # 1新增空间point类型坐标字段 ALTER TABLE gaoxin_isdp.business_master ADD COLUMN location2 point NULL AFTER location;# 2从原字段更新点位字段,原字段poi1是字符串106.474596,29.464360 UPDATE business_master SET location POINT(substr(poi…...
实际开发中,git版本切换操作
业务场景 客户环境需要部署当前分支的之前的一个版本代码,所以需要从当前的commit切换到之前的commit 版本切换步骤 查看版本提交日志 $ git reflog切换版本 git reset --hard 七位数的版本id在切换后的版本上更改代码后 执行完暂存 git commit 把回退后的代码提…...
线程池实现“线程复用”的原理
线程池实现“线程复用”的原理 学习线程复用的原理,以及对线程池的 execute 这个非常重要的方法进行源码解析。 线程复用原理 我们知道线程池会使用固定数量或可变数量的线程来执行任务,但无论是固定数量或可变数量的线程,其线程数量都远远…...
[Linux开发工具]——make/Makefile的使用
Linux项目自动化构建工具——make/Makefile 前言:一、背景二、认识make和makefile2.1 创建Makefile文件2.2 创建test.c文件,并打开Makefile2.3 我们想要test.c生成test文件2.4 编译2.5 清理可执行文件 三、理解依赖关系和依赖方法3.1 依赖关系3.2 依赖方…...
数字丝路新基建:HAKUNA MATATA发布OpenClaw智能系统,为中非合作打造双向“数字龙虾“
——非洲驻华使馆专属智能发布系统暨中国企业对非智能决策平台正式上线【中国,北京/杭州,2026年4月12日】 在2024年中非合作论坛北京峰会精神持续深化落实、中非经贸合作迈向"真实亲诚"新时代的背景下,非洲综合服务平台HAKUNA MATA…...
【大模型可观测性生死线】:为什么你的Prometheus告警总在凌晨爆炸?7步阈值校准工作流曝光
第一章:大模型可观测性生死线:阈值设定的战略意义 2026奇点智能技术大会(https://ml-summit.org) 在大模型生产化落地过程中,可观测性并非仅关乎“能否看到指标”,而本质是“能否在失效前精准干预”。阈值设定正是这条生死线的锚…...
深入解析 vsock 框架:从基础原理到嵌套虚拟机通信实践
1. 认识vsock:虚拟机通信的高速通道 第一次听说vsock这个概念时,我正在调试一个KVM虚拟机的性能问题。当时传统TCP/IP通信的延迟让我头疼不已,直到发现这个名为"VM Sockets"的黑科技。简单来说,vsock就像是给虚拟机专门…...
信道估计实战:从LS、MMSE到LMMSE的性能演进与工程权衡
1. 信道估计:无线通信的"导航系统" 想象一下你在一个陌生的城市开车,GPS信号时强时弱。信道估计就像是通信系统中的GPS,帮助接收端"看清"信号传输路径上的各种变化。在无线通信中,电磁波经过反射、折射、衍射…...
CentOS下hping3从编译到实战:网络测试与安全攻防指南
1. 初识hping3:网络测试的瑞士军刀 第一次接触hping3是在五年前的一次网络故障排查中。当时我们遇到一个诡异的网络抖动问题,常规的ping和traceroute都无法定位问题根源。一位资深工程师随手敲了几行hping3命令,不到十分钟就锁定了问题所在—…...
推荐一款老师喜欢的强大工具:支持Win、鸿合、希沃大屏,非常实用!
聊一聊又是一年开学季。开学了发一些应时期的小软件。今天给大家分享一款学校班级课程表工具。这款工具可以投放在学校电子大屏上。支持学校的白板软件。软件介绍学校班级课程表工具界面清爽,信息能一目了然。虽然看感觉功能简单,但每个模板都可以进行设…...
Qwen3-14B镜像免配置部署教程:Python 3.10+PyTorch 2.4开箱即用指南
Qwen3-14B镜像免配置部署教程:Python 3.10PyTorch 2.4开箱即用指南 1. 镜像概述与核心优势 Qwen3-14B私有部署镜像是一款专为RTX 4090D 24GB显存显卡优化的开箱即用解决方案。这个镜像最大的特点就是"零配置"——所有环境依赖、模型权重、优化组件都已预…...
为什么92%的大模型项目在UAT阶段暴雷?揭秘测试用例生成缺失的3个工程化断层与2套已验证CI/CD嵌入方案
第一章:大模型工程化测试用例自动生成 2026奇点智能技术大会(https://ml-summit.org) 大模型工程化落地的核心挑战之一,在于测试覆盖难以随模型迭代速度同步演进。传统手工编写测试用例的方式在面对动态提示(prompt)、多模态输入…...
KrillinAI:AI视频翻译与配音的终极解决方案,让多语言内容创作触手可及
KrillinAI:AI视频翻译与配音的终极解决方案,让多语言内容创作触手可及 【免费下载链接】KrillinAI Video translation and dubbing tool powered by LLMs. The video translator offers 100 language translations and one-click full-process deploymen…...
Apriltag tag36H11:视觉系统标定的高效解决方案
1. Apriltag tag36H11是什么? 如果你玩过机器人或者做过计算机视觉项目,大概率听说过Apriltag。简单来说,Apriltag就是一种特殊的二维码,但它的设计更适用于机器视觉系统。tag36H11是Apriltag家族中最常用的一个变种,…...
