# mac m1 安装sqlserver踩坑经历

> 发布于：2022-03-16 | 分类：技能分享 | 原文：https://www.imbailey.cn/post/mac-m1-install-sql-server

## 为什么安装sqlserver

上数据库系统概论需要用到数据库，按道理来说应该使用开源的mysql，但老师说因为学校用的是sqlserver，我们考试也用这个，所以我也就得用。

## 法一：云数据库（❌

在mac上直接安装微软的产品，想都别想～所以我首先把注意力放在了云上。众所周知，像阿里云、腾讯云等服务商经常有云数据库优惠活动，购买一个1核1G的mysql数据库一年的时间也用不到10元，性价比拉满。

但是sqlserver数据库贵的要死啊，可能是因为比较小众而且微软要从中赚授权费吧。

于是我又想到了微软自家不是有个云平台Azure吗，以前白嫖过他家的服务器，体验蛮不错。满怀期待登上去看，需要外币信用卡才能注册，对国内用户极不友好。

正当我灰心丧气打算关闭页面时，突然发现Azure有学生套餐！看了下介绍，好像福利挺多的，优惠时间也蛮长，在我的印象中国外这种大厂还是很大气的。然后我就兴高采烈的用学校邮箱注册了学生账户（不需要外币信用卡）。进去一看，哟吼～，产品还挺多，有一堆不认识的。我赶紧搞了一个sqlserver，过程也并不复杂，唯一的缺点是服务器只能选择在美国东部，裸连速度很慢。不过我有代理，供学习使用应该够了。

气人的是，过了两天微软给我发邮件，说我的学生账户可以使用的免费额度没了...白嫖失败。对于穷学生来说，这个法子行不通。

## 法二：在本地安装（❌

我发现sqlserver可以使用docker安装。我对docker印象蛮好的，认为它可以解决大多环境问题。 我的本来想法是这个方案应该非常easy，两步就能搞定，第一步安装docker，第二步run个镜像就能用了。但是，在m1的mac上，docker已经不是原来的那个docker了。

安装docker desktop确实非常方便，只要在官网下载，然后点下一步就能装好，比windows方便多了（在win上你得先跑一个linux虚拟机）。

第二步拉取镜像，跑容器发现跑不起来，会报错，怀疑是m1芯片问题。

为了确认我不是个例，我还去dockerhub看了下，果然评论里都是说这个问题的。它就是不支持m1芯片。

从此之后，我再也不吹docker了，看来它并不能解决所有环境问题。

有人倒是成功了，先跑一个pd虚拟机，再在虚拟机里跑docker，搁这套娃呢？看来在本地安装是指望不上了。

## 法三：云服务器上使用docker（勉强✅

不能在m1的mac上的docker里安装，在传统的linux上总可以安装吧？

这个方案确实可行，但也遇到了小坑。

众所周知，便宜点云服务器有很多，10多块钱就能搞一个1核2G的linux云服务器。执行和法二相同的操作：

```
sudo docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=密码"    -p 1433:1433 --name sql1 --hostname sql1 -d mcr.microsoft.com/mssql/server:2019-latest
```

没报错，看来要成功了？真是踏破铁鞋无觅处，得来全不费功夫呀，哈哈～

然后再打`docker ps -a`，看下容器跑起来没有。结果发现没有，看来高兴早了qwq。

为什么呢，打`docker logs 容器ID`看下原因，他娘的，说内存至少要2000mb才能运行。

我的云服务器内存就是2G，实际使用时系统和其他服务会占用一些内存，所以留给sqlserver的内存肯定不足2G了。但我还是抱着侥幸心理，在docker启动容器的命令里分配了2000mb的内存，仍然不行，我试了阿里云，腾讯云的1核2G轻量化应用服务器，都是不行的。

组里面有个2核4G的腾讯云轻量化应用服务器，可以运行！但这服务器是组里的...算了，直接拿来用吧。

麻烦就是端口开不了，自己电脑的navicat连不上，只能ssh到服务器上用命令行工具。

哭了，折腾两节课也没能很好解决这个问题。

## 总结

如果说windows能做100%的事情，那么M1 Mac 只能做80%。但是我还是会选择m1 mac，因为在它能做的事情范围之内，你能体验到极致的丝滑。
