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

Mac电脑上本地安装 MySQL并配置开启自启完整流程

文章目录

    • 一、mysql安装
      • 1.1 使用 Homebrew 安装(推荐)
      • 1.2 手动下载 MySQL 社区版
      • 1.3 常见问题
      • 1.4 图形化管理工具(可选)
    • 二、Mac 上配置 MySQL 开机自动启动
      • 2.1 使用 `launchd` 系统服务(原生支持)
      • 2.2 通过 Homebrew 设置开机启动(推荐)
      • 2.3 常见问题

在 Mac 电脑上本地安装 MySQL 的步骤如下:

一、mysql安装

1.1 使用 Homebrew 安装(推荐)

  1. 安装 Homebrew(如果尚未安装):

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. 安装 MySQL

    brew install mysql
    
  3. 启动 MySQL 服务

    brew services start mysql
    
  4. 运行安全配置向导(设置 root 密码等):

    mysql_secure_installation
    
    • 按照提示操作,建议设置 root 密码并启用安全选项。
  5. 验证安装

    mysql -u root -p
    

    输入密码后,成功进入 MySQL 命令行即表示安装完成。


1.2 手动下载 MySQL 社区版

  1. 下载安装包

    • 访问 MySQL 官网下载页面。
    • 选择 macOS 版本(推荐下载 .dmg 格式的安装包)。
  2. 安装 MySQL

    • 双击下载的 .dmg 文件。
    • 运行其中的 .pkg 安装程序,按向导完成安装。
  3. 配置 MySQL

    • 安装完成后,在系统偏好设置中找到 MySQL,点击启动服务。
    • 或在终端运行:
      sudo /usr/local/mysql/support-files/mysql.server start
      
  4. 设置环境变量(可选):
    将 MySQL 添加到 PATH 中,方便命令行访问:

    echo 'export PATH="/usr/local/mysql/bin:$PATH"' >> ~/.zshrc
    source ~/.zshrc
    

    (如果使用 Bash,将 .zshrc 替换为 .bash_profile

  5. 登录 MySQL

    mysql -u root -p
    

    初始密码通常在安装结束时显示,或保存在 /usr/local/mysql/data/mysql-error.log 中。


1.3 常见问题

  1. 忘记 root 密码

    • 停止 MySQL 服务:
      brew services stop mysql  # 或 sudo /usr/local/mysql/support-files/mysql.server stop
      
    • 启动安全模式:
      sudo mysqld_safe --skip-grant-tables
      
    • 另开终端登录并重置密码:
      mysql -u root
      
      FLUSH PRIVILEGES;
      ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
      EXIT;
      
  2. 无法启动服务

    • 检查错误日志:/usr/local/mysql/data/*.err
    • 可能是权限问题,尝试:
      sudo chown -R _mysql:mysql /usr/local/mysql/data
      

1.4 图形化管理工具(可选)

  • MySQL Workbench:官方可视化工具,支持查询和管理。
  • Sequel Ace:轻量级开源客户端(下载地址)。

完成后,你就可以在本地开发中使用 MySQL 了!

二、Mac 上配置 MySQL 开机自动启动

2.1 使用 launchd 系统服务(原生支持)

Mac 使用 launchd 管理系统服务,MySQL 安装后通常会自动创建 .plist 文件。以下是手动配置步骤:

1. 确认 MySQL 安装路径

which mysqld

通常路径为 /usr/local/mysql/bin/mysqld(通过官方 .dmg 安装)或 /opt/homebrew/bin/mysqld(通过 Homebrew 安装)。

2. 创建或检查 .plist 文件
MySQL 官方安装包通常会自动生成:

ls /Library/LaunchDaemons/com.mysql.mysql.plist

如果不存在,手动创建:

sudo nano /Library/LaunchDaemons/com.mysql.mysqld.plist

写入以下内容(根据实际路径调整):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict><key>Label</key><string>com.mysql.mysqld</string><key>ProgramArguments</key><array><string>/usr/local/mysql/bin/mysqld_safe</string><string>--user=mysql</string></array><key>RunAtLoad</key><true/><key>KeepAlive</key><true/><key>WorkingDirectory</key><string>/usr/local/mysql</string>
</dict>
</plist>

3. 加载服务并设置权限

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysqld.plist
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist

4. 验证是否生效

sudo launchctl list | grep mysql

重启 Mac 后检查 MySQL 是否自动运行:

mysql -u root -p -e "STATUS;"

2.2 通过 Homebrew 设置开机启动(推荐)

如果通过 Homebrew 安装 MySQL,直接使用 brew services 管理:

1. 启动并设置开机自启

brew services start mysql

2. 验证状态

brew services list

输出应包含:

mysql started ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

3. 取消开机启动

brew services stop mysql

2.3 常见问题

  1. 路径错误
    如果报错 mysqld_safe: command not found,检查路径是否正确:

    sudo nano /Library/LaunchDaemons/com.mysql.mysqld.plist
    

    将路径改为实际路径(如 /opt/homebrew/bin/mysqld_safe)。

  2. 权限问题
    确保数据目录权限正确:

    sudo chown -R _mysql:mysql /usr/local/mysql/data
    
  3. 手动启动/停止

    • 启动:
      sudo /usr/local/mysql/support-files/mysql.server start
      
    • 停止:
      sudo /usr/local/mysql/support-files/mysql.server stop
      

通过以上任一方法配置后,MySQL 会在 Mac 启动时自动运行。推荐使用 Homebrew 管理,更简洁高效。

相关文章:

Mac电脑上本地安装 MySQL并配置开启自启完整流程

文章目录 一、mysql安装1.1 使用 Homebrew 安装&#xff08;推荐&#xff09;1.2 手动下载 MySQL 社区版1.3 常见问题1.4 图形化管理工具&#xff08;可选&#xff09; 二、Mac 上配置 MySQL 开机自动启动2.1 使用 launchd 系统服务&#xff08;原生支持&#xff09;2.2 通过 H…...

JavaSE:面向对象进阶之内部类(Inner Class)

JavaSE 面向对象进阶之内部类&#xff08;Inner Class&#xff09; 一、内部类的核心概念 内部类是定义在另一个类内部的类&#xff0c;它与外部类存在紧密的逻辑关联&#xff0c;主要作用&#xff1a; 封装细节&#xff1a;隐藏实现细节&#xff0c;对外提供简洁接口。访问…...

【HW系列】—安全设备介绍(开源蜜罐的安装以及使用指南)

文章目录 蜜罐1. 什么是蜜罐&#xff1f;2. 开源蜜罐搭建与使用3. HFish 开源蜜罐详解安装步骤使用指南关闭方法 总结 蜜罐 1. 什么是蜜罐&#xff1f; 蜜罐&#xff08;Honeypot&#xff09;是一种主动防御技术&#xff0c;通过模拟存在漏洞的系统或服务&#xff08;如数据库…...

汽车总线分析总结(CAN、LIN、FlexRay、MOST、车载以太网)

目录 一、汽车总线技术概述 二、主流汽车总线技术对比分析 1. CAN总线&#xff08;Controller Area Network&#xff09; 2. LIN总线&#xff08;Local Interconnect Network&#xff09; 3. FlexRay总线 4. MOST总线&#xff08;Media Oriented Systems Transport&#x…...

MyBatisPlus--条件构造器及自定义SQL详解

条件构造器 在前面学习快速入门的时候&#xff0c;练习的增删改查都是基于id去执行的&#xff0c;但是在实际开发业务中&#xff0c;增删改查的条件往往是比较复杂的&#xff0c;因此MyBatisPlus就提供了一个条件构造器来帮助构造复杂的条件。 MyBatisPlus支持各种复杂的wher…...

OVD开放词汇检测 Detic 训练COCO数据集实践

0、引言 纯视觉检测当前研究基本比较饱和&#xff0c;继续创新提升空间很小&#xff0c;除非在CNN和transformer上提出更强基础建模方式。和文本结合是当前的一大趋势&#xff0c;也是计算机视觉和自然语言处理结合的未来趋势&#xff0c;目前和文本结合的目标检测工作还是有很…...

docker、ctr、crictl命令简介与使用

概述 在使用k3s过程中&#xff0c;经常需要使用ctr和crictl两个命令&#xff0c;本文记录一下。 ctr 类似docker命令是docker-shim容器运行时的客户端工具&#xff0c;ctr是Containerd的客户端工具。一个简单的CLI接口&#xff0c;用作Containerd本身的一些调试用途&#xf…...

WEB安全--SQL注入--bypass技巧2

继之前文章的补充&#xff1a; WEB安全--SQL注入--bypass技巧_sql注入过滤空格-CSDN博客 Q1&#xff1a;发现sql注入的时间盲注时&#xff0c;如果时间盲注的函数都被过滤了&#xff0c;怎么办&#xff1f; 除了找其他函数替换、编码等方式&#xff0c;还有以下方式绕过&…...

【强化学习哲学 Day 1】Q-Learning - 在不确定中寻找确定

&#x1f3ad; 故事&#xff1a;那些选择的时刻 你还记得那些站在十字路口的时刻吗&#xff1f; 也许是刚进实验室&#xff0c;面对满墙的研究方向海报&#xff0c;不知道哪条路通向你想要的未来&#xff1b;也许是第一份工作的选择&#xff0c;大厂的螺丝钉还是小公司的多面…...

WEB3——什么是ABI

怎么获得ABI&#xff1f; 在编译完合约后&#xff0c;可以在左边下面点击复制ABI ABI&#xff08;Application Binary Interface&#xff0c;应用二进制接口&#xff09;是用来让前端或服务端 JavaScript 代码与智能合约进行交互的桥梁&#xff0c;它描述了合约的函数、事件和…...

嵌入式软件--stm32 DAY 8.5 基础复习总结

1.时钟树 在数据手册里面&#xff0c;有一张密密麻麻的图&#xff0c;正是时钟系统里的时钟树。 对于时钟&#xff0c;我们注意有两点。一个是系统时钟SYSCLK,一个是依赖外部晶振生成的RTC. RTC以外部低速晶振作为时钟源或者外部高速晶振128分频后作为时钟源&#xff0c;又或者…...

MMRL: Multi-Modal Representation Learning for Vision-Language Models(多模态表示学习)

摘要 预训练的VLMs,对于跨任务的迁移学习至关重要&#xff0c;然而&#xff0c;在few-shot数据集上微调会导致过拟合&#xff0c;降低在新任务上的性能。为解决这个问题&#xff0c;提出一种新的多模态表征学习框架&#xff08;MMRL&#xff09;,该框架引入了一个共享、可学习…...

贪心算法求解汽车加油问题

一、问题描述 一辆汽车加满油后可以行驶 n km。在前往目的地的途中&#xff0c;有多个加油站。我们的目标是设计一个有效的算法&#xff0c;确定汽车应该在哪些加油站停靠加油&#xff0c;以使得沿途的加油次数最少。 二、输入输出形式 算法的输入包括两部分&#xff1a;第一…...

JVM Full GC 频繁问题排查、优化及解决方案

引言 在Java应用程序中&#xff0c;JVM&#xff08;Java虚拟机&#xff09;通过垃圾回收机制自动管理内存&#xff0c;确保不再使用的对象能够被及时清理和释放。虽然垃圾回收在大多数情况下运行顺利&#xff0c;但当Full GC频繁发生时&#xff0c;它会严重影响应用性能&#x…...

rsync服务的搭建

目录 一、rsync介绍 rsync的安装 二、rsync的语法 三、rsync命令使用 1. 本机同步 2. 远程同步 四、rsync作为服务使用 1、尝试启动rsync程序 2、rsync的配置文件介绍 注意事项&#xff1a; 3. rsyncinotify实时同步 3.依赖服务托管xinetd&#xff08;CentOS 6中rs…...

JDK21深度解密 Day 8:Spring Boot 3与虚拟线程整合

【JDK21深度解密 Day 8】Spring Boot 3与虚拟线程整合 引言:Spring Boot 3遇上JDK21虚拟线程 在本系列的第8天,我们将聚焦于Spring Boot 3与JDK21虚拟线程的整合实践。作为全网首套完整的JDK21特性解析,我们不仅会探讨虚拟线程如何颠覆传统Java并发模型,还会通过完整的Sp…...

vscode 配置 QtCreat Cmake项目

1.vscode安装CmakeTool插件并配置QT中cmake的路径&#xff0c;不止这一处 2.cmake生成器使用Ninja&#xff08;Ninja在安装QT时需要勾选&#xff09;&#xff0c;可以解决[build] cc1plus.exe: error: too many filenames given; type ‘cc1plus.exe --help’ for usage 编译时…...

排序算法-归并排序与快速排序

归并排序与快速排序 快速排序是利用的递归思想&#xff1a;选取一个基准数&#xff0c;把小于基准数的放左边 大于的放右边直到整个序列有序 。快排分割函数 O(lognn), 空间 :没有额外开辟新的数组但是递归树调用函数会占用栈内存 O(logn) 。 归并排序&#xff1a;在递归返回的…...

HTML实现端午节主题网站:龙舟争渡,凭吊祭江诵君赋。

名人说&#xff1a;龙舟争渡&#xff0c;助威呐喊&#xff0c;凭吊祭江诵君赋。——苏轼《六幺令天中节》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、项目概览&#xff1a;传统与现代的技术碰撞1. 核心特…...

uniapp uni-id 如果是正式项目,需自行实现发送邮件的相关功能

(3) 使用云对象sendEmailCode 发送邮箱验证码&#xff0c;报错送邮箱验证码失败 Error: 已启动测试模式&#xff0c;直接使用&#xff1a;123456作为邮箱验证码即可。 如果是正式项目&#xff0c;需自行实现发送邮件的相关功能 - DCloud问答 uni-id 没有实现邮箱验证码逻辑&am…...

Spring boot 策略模式

public abstract class Node {/*** 执行** param a* param b* return*/public abstract Integer execute(int a, int b); }package my.node;import org.springframework.stereotype.Component;Component("exec") public class ExecNode extends Node {Overridepublic…...

websocket在vue中的使用步骤,以及实现聊天

一、WebSocket集成步骤 ‌连接初始化‌ 在Vue组件中创建WebSocket实例&#xff0c;建议在mounted生命周期中执行&#xff1a; data() {return {socket: null,messages: []} }, mounted() {this.socket new WebSocket(wss://your-server-endpoint); }‌事件监听配置 ‌连接成…...

C++学习-入门到精通【12】文件处理

C学习-入门到精通【12】文件处理 目录 C学习-入门到精通【12】文件处理一、文件和流二、创建顺序文件三、从顺序文件读取数据文件定位指针对之前的程序进行修改&#xff1a;贷款查询程序 四、更新顺序文件五、随机存取文件1.创建随机存取文件2.修改程序&#xff1a;贷款处理程序…...

第十一篇:MySQL 在分布式系统中的一致性保障与中间件实践

随着微服务和分布式架构的发展&#xff0c;单点数据库早已无法满足系统的横向扩展需求。本篇聚焦 MySQL 在分布式系统中的一致性保障机制&#xff0c;以及相关中间件的使用策略与实战经验。 一、一致性问题的由来 在 单机 MySQL 环境 中&#xff0c;事务具有原子性、隔离性&am…...

Java中如何枚举正则表达式捕获组的名字

在使用正则表达式在匹配文本时&#xff0c;除了可以通过表达式捕获命中的文本串外&#xff0c;还可以对捕获的文本串进行命名。尤其是在解析日志的场景中&#xff0c;经常会被用到。表达式如下&#xff1a; \<(?<pri>\d)\>(?<time>.*) (?<host>\S)…...

matlab实现图像压缩编码

一、基于DCT的JPEG压缩&#xff08;有损&#xff09; 1. 核心步骤 图像分块&#xff1a;将图像划分为88的小块。离散余弦变换&#xff08;DCT&#xff09;&#xff1a;对每个块进行DCT变换。量化&#xff1a;对DCT系数进行量化以减少高频信息。熵编码&#xff1a;使用哈夫曼或…...

如何排查Redis单个Key命中率骤降?

问题现象 Redis整体命中率98%&#xff0c;但监控发现特定Key&#xff08;如user:1000:profile&#xff09;的命中率从99%骤降至40%&#xff0c;引发服务延迟上升。 排查步骤 1. 确认现象与定位Key // 通过Redis监控工具获取Key指标 public void monitorKey(String key) {Je…...

记一次 Starrocks be 内存异常宕机

突发性 be 内存飙高&#xff0c;直至被系统 kill 掉&#xff0c;be 内存如下&#xff1a;其中 starrocks_be_update_mem_bytes 指标打满&#xff0c;重启也是如此 [rootlocalhost bin]# curl -XGET -s http://192.168.1.49:8040/metrics | grep "^starrocks_be_.*_mem_b…...

Spring Boot 读取.env文件获取配置

Spring Boot 读取.env文件获取配置 在Resouce 目录下创建.env文件 # DEEP SEEK TOKEN DEEP_SEEK_TOKENyour_deep_seek_key # 阿里云百炼 TOKEN ALI_BAILIAN_TOKENyour_ali_bailian_keyyml引入.env文件 spring:config:import: optional:classpath:.env[.properties]使用.env文…...

LangChain-结合GLM+SQL+函数调用实现数据库查询(一)

业务流程 实现步骤 1. 加载数据库配置 在项目的根目录下创建.env 文件&#xff0c;设置文件内容&#xff1a; DB_HOSTxxx DB_PORT3306 DB_USERxxx DB_PASSWORDxxx DB_NAMExxx DB_CHARSETutf8mb4 加载环境变量&#xff0c;从 .env 文件中读取数据库配置信息 使用 os.getenv…...