当前位置: 首页 > news >正文

macOS 通过 MacPorts 正确安装 MySQL 同时解决无法连接问题

如果你通过 sudo port install 命令正常安装了 MySQL,再通过 sudo port load 命令启动了 MySQL Server,此刻却发现使用 Navicat 之类的 GUI 软件无法连接,始终返回无法连接到 127.0.0.1 服务器。这是一个小坑,因为他默认使用了 Sock 套接字连接方式。

1. 直接使用套接字

如果你并不在意客户端如何连接 MySQL,你可以直接使用套接字的方式。这里以 Navicat 为例:
use_socket_file
很简单,在 Navicat 的高级选项中勾选 使用套接字文件,填写:/opt/local/var/run/mysql57/mysqld.sock 路径即可(版本不同请将中间的 57 修改为你所安装的版本)

当然,你 仍然 需要回到顶部的常规页中 输入密码

为什么是这个路径?

首先我们来看看安装成功后的提示:

On activation if no /opt/local/etc/mysql57/my.cnf file exists one will be created
which loads /opt/local/etc/mysql57/macports-default.cnf.

If a /opt/local/etc/mysql57/my.cnf file 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.cnf is 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

保存后 unloadload 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

cat_password
最后使用 mysql 命令连接数据库后修改密码即可:

mysql -uroot -p
# 回车后粘贴上方获取的密码连接到数据库

在 MySQL 命令行中执行:

# 将 123456 修改为你需要设置的密码
set password = password('123456');# 如需开放来源连接请执行下方两句,否则无需执行
use mysql;
update user set host='%' where user='root';

好了,“导航猫”也能跟以前一样连接了

success_connect

相关文章:

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语言射击小游戏的实现示例。这个游戏中&#xff0c;玩家控制一个飞船&#xff0c;敌方飞船会随机出现并向玩家移动。如果玩家的飞船与敌方飞船相撞&#xff0c;玩家就失去一条生命&#xff0c;代码如下&#xff1a; #include <stdio.h> #include <s…...

c++11 标准模板(STL)本地化库 - std::islower(std::locale) 检查字符是否被本地环境分类为小写

本地化库 本地环境设施包含字符分类和字符串校对、数值、货币及日期/时间格式化和分析&#xff0c;以及消息取得的国际化支持。本地环境设置控制流 I/O 、正则表达式库和 C 标准库的其他组件的行为。 检查字符是否被本地环境分类为小写 std::islower(std::locale) template&…...

粘度指数改进剂市场需求增长 为润滑油添加剂细分产品

粘度指数改进剂市场需求增长 为润滑油添加剂细分产品 粘度指数改进剂是一种油溶性高分子聚合物&#xff0c;主要用于提高润滑油粘度以及粘度指数。粘度指数改进剂具有稠化能力强、抗磨性好、热稳定性好等优势&#xff0c;可添加于液压油、内燃机油以及齿轮油等油品中。 …...

LabVIEW柴油机安保监控系统

LabVIEW柴油机安保监控系统 随着航运业的快速发展&#xff0c;确保船舶柴油机的安全稳定运行变得尤为重要。船舶柴油机故障不仅会导致重大的经济损失&#xff0c;还可能危及人员安全和环境。设计并开发了一套基于LabVIEW平台的柴油机安保监控系统&#xff0c;旨在通过实时监控…...

实测国内AI大模型问答效果

随着ChatGPT热度的攀升&#xff0c;越来越多的公司也相继推出了自己的AI大模型。按照github工程awesome-LLMs-In-China所列举的&#xff0c;现如今国内AI大模型已达243个&#xff0c;比较著名的有文心一言、通义千问等。各大应用也开始内置AI玩法&#xff0c;如抖音的AI特效。下…...

不得不等待的无奈 -《葡萄成熟时》

恋上一个人便是撒下一颗葡萄种子&#xff0c;你可能会坚持&#xff0c;但不一定会结果&#xff0c;收获&#xff08;在一起&#xff09;。 更有可能得到的是枯枝烂叶&#xff08;ta的离开&#xff09;。 就算你再努力&#xff0c;再用心去栽培&#xff08;为ta付出&#xff0…...

【Python】Python中装饰器和魔法方法的区别

在Python中&#xff0c;装饰器&#xff08;Decorators&#xff09;和魔法方法&#xff08;Magic Methods&#xff09;是两种不同的高级特性&#xff0c;分别服务于不同的目的。 装饰器 (Decorators) 装饰器是一种强大的工具&#xff0c;它可以修改或增强函数、方法或类的行为…...

【React】创建你的第一个React组件

要使用React创建你的第一个组件&#xff0c;首先确保你已经安装了Node.js和npm&#xff08;Node包管理器&#xff09;。然后&#xff0c;你可以通过npm安装Create React App这个官方支持的脚手架工具来快速生成一个新的React应用项目&#xff0c;该项目包含了React、ReactDOM、…...

五分钟搞懂MySQL索引下推

什么是索引下推 索引下推(Index Condition Pushdown&#xff0c;简称ICP)&#xff0c;是MySQL5.6版本的新特性&#xff0c;它能减少回表查询次数&#xff0c;提高查询效率。 索引下推优化的原理 我们先简单了解一下MySQL大概的架构&#xff1a; MySQL服务层负责SQL语法解析、…...

【数据库】SQL如何添加数据

在SQL中&#xff0c;您可以使用INSERT INTO语句来添加数据到数据库表中。以下是一些基本的示例和解释&#xff1a; 1.插入完整行数据&#xff1a; 如果您想为表中的每一列都插入数据&#xff0c;那么可以不必指定列名。但是&#xff0c;您需要为每一列都提供数据&#xff0c;并…...

ClickHouse01-什么是ClickHouse

什么是ClickHouse&#xff1f; 关于发展历史存在的优势与劣势什么是它风靡的原因&#xff1f; 什么是ClickHouse&#xff1f; 官方给出的回答是&#xff0c;它是一个高性能、列式存储、基于SQL、供在线分析处理的数据库管理系统 当然这边不得不提到OLAP(Online Analytical Pr…...

使用Docker搭建Nascab

使用Docker来部署Nascab能够让这个过程变得更加灵活和便捷&#xff0c;因为Docker可以在隔离的环境中运行应用程序&#xff0c;简化了部署和配置的复杂性。 使用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 如何并发修改

前言 并发控制&#xff0c;一般有两种方案&#xff0c;悲观锁和乐观锁&#xff0c;其中悲观锁是默认每次更新操作肯定会冲突&#xff0c;所以每次操作都要先获取锁&#xff0c;操作完毕再释放锁&#xff0c;适用于写比较多的场景。而乐观锁是默认每次更新操作都不会冲突&#…...

Docker 安装 Skywalking以及UI界面

关于Skywalking 在现代分布式系统架构中&#xff0c;应用性能监控&#xff08;Application Performance Monitoring, APM&#xff09;扮演着至关重要的角色。本文将聚焦于一款备受瞩目的开源APM工具——Apache Skywalking&#xff0c;通过对其功能特性和工作原理的详细介绍&am…...

mysql 空间查询 多边形内的点

数据库查询 # 1新增空间point类型坐标字段 ALTER TABLE gaoxin_isdp.business_master ADD COLUMN location2 point NULL AFTER location;# 2从原字段更新点位字段&#xff0c;原字段poi1是字符串106.474596,29.464360 UPDATE business_master SET location POINT(substr(poi…...

实际开发中,git版本切换操作

业务场景 客户环境需要部署当前分支的之前的一个版本代码&#xff0c;所以需要从当前的commit切换到之前的commit 版本切换步骤 查看版本提交日志 $ git reflog切换版本 git reset --hard 七位数的版本id在切换后的版本上更改代码后 执行完暂存 git commit 把回退后的代码提…...

线程池实现“线程复用”的原理

线程池实现“线程复用”的原理 学习线程复用的原理&#xff0c;以及对线程池的 execute 这个非常重要的方法进行源码解析。 线程复用原理 我们知道线程池会使用固定数量或可变数量的线程来执行任务&#xff0c;但无论是固定数量或可变数量的线程&#xff0c;其线程数量都远远…...

[Linux开发工具]——make/Makefile的使用

Linux项目自动化构建工具——make/Makefile 前言&#xff1a;一、背景二、认识make和makefile2.1 创建Makefile文件2.2 创建test.c文件&#xff0c;并打开Makefile2.3 我们想要test.c生成test文件2.4 编译2.5 清理可执行文件 三、理解依赖关系和依赖方法3.1 依赖关系3.2 依赖方…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

如何在看板中体现优先级变化

在看板中有效体现优先级变化的关键措施包括&#xff1a;采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中&#xff0c;设置任务排序规则尤其重要&#xff0c;因为它让看板视觉上直观地体…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

【论文阅读28】-CNN-BiLSTM-Attention-(2024)

本文把滑坡位移序列拆开、筛优质因子&#xff0c;再用 CNN-BiLSTM-Attention 来动态预测每个子序列&#xff0c;最后重构出总位移&#xff0c;预测效果超越传统模型。 文章目录 1 引言2 方法2.1 位移时间序列加性模型2.2 变分模态分解 (VMD) 具体步骤2.3.1 样本熵&#xff08;S…...

在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案

这个问题我看其他博主也写了&#xff0c;要么要会员、要么写的乱七八糟。这里我整理一下&#xff0c;把问题说清楚并且给出代码&#xff0c;拿去用就行&#xff0c;照着葫芦画瓢。 问题 在继承QWebEngineView后&#xff0c;重写mousePressEvent或event函数无法捕获鼠标按下事…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...