Mac 安装 MySQL + PostgreSQL 完整方案
分两种方式:Homebrew(最简单推荐)、
SDKMAN(不适合数据库,SDKMAN 只管 JDK/Maven/Gradle 这类 Java 生态工具)
一句话结论:数据库不用 sdkman,直接用 Homebrew 一行命令安装
1:先安装 Homebrew(Mac 万能包管理器)
打开「终端」,复制运行
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
会让你输入本机密码
出现以下信息

这是 Homebrew 安装过程中的一个安全确认提示,完全正常!它在告诉你即将安装什么、安装在哪里,让你最后确认一下。
它列出了 Homebrew 将在你的 Mac 上创建的所有文件夹和文件,主要包括:
-
/opt/homebrew/bin--- 存放所有通过 Homebrew 安装的命令(比如mysql、psql、brew本身) -
/opt/homebrew/Cellar--- 所有软件的"源码包"存放地 -
/opt/homebrew/etc--- 配置文件目录 -
/opt/homebrew/var--- 数据存储目录(数据库文件会放在这下面)
按一下键盘上的 回车键(Return/Enter),安装就会继续。
-
按
回车→ 继续安装 ✅ -
按
其他任意键→ 取消安装 ❌
然后继续提示你输入本机密码

然后你什么也不需要做,等待它下载完毕

配置环境变量
echo >> /Users/【你的用户名称】/.zprofile
echo 'eval "$(opt/homebrew/bin/brew shellenv zsh)"' >> /Users/【你的用户名称】/.zprofile
eval "$(opt/homebrew/bin/brew shellenv zsh)"
如果上述报错了,请执行这个命令
eval "$(/opt/homebrew/bin/brew shellenv zsh)"
完毕之后
输入brew -v 就能看到版本号
验证是否装好:
brew -v
2:开始安装mysql
brew install mysql
会提示你是否安装,或者安装最新的,
我是安装8.0 因为稳定,兼容大部分项目,所以我输入n
brew install mysql@8.0
这个过程会下载并安装 MySQL,大约需要 3-5 分钟(取决于网速)。
启动 MySQL 服务
brew services start mysql@8.0
设置 root 密码(首次必做)
mysql_secure_installation
交互操作指南(照着选)
| 问题 | 建议操作 |
|---|---|
Enter current password for root |
直接按回车(初始没有密码) |
Switch to unix_socket authentication |
输入 n 回车 |
Change the root password? |
输入 y 回车 |
New password: |
输入你想设的密码(比如 123456),然后回车 |
Re-enter new password: |
再次输入同一密码,回车 |
Remove anonymous users? |
输入 y 回车 |
Disallow root login remotely? |
输入 y 回车 |
Remove test database and access to it? |
输入 y 回车 |
Reload privilege tables now? |
输入 y 回车 |
3:最糟糕的事情忘记了密码
重置密码
- 先停止 MySQL:
brew services stop mysql@8.0
- 以安全模式启动(跳过密码验证):
mysqld_safe --skip-grant-tables &
- 无密码登录:
mysql -u root
- 重置密码 (在
mysql>提示符下执行):
sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '12345';
FLUSH PRIVILEGES;
EXIT;
- 重启 MySQL:
brew services restart mysql@8.0
- 再用新密码登录:
mysql -u root -p
测试命令
-- 查看所有数据库
SHOW DATABASES;
-- 创建一个新数据库(比如叫 myapp_dev)
CREATE DATABASE myapp_dev;
-- 查看当前用户
SELECT USER();
-- 查看 MySQL 版本
SELECT VERSION();