Hướng dẫn cài sql server cho mac ó

Đặc biệt hữu ích dành cho các bạn sinh viên chơi hệ Mac nhưng không muốn cài và sử dụng windows thông qua Bootcamp.

Hướng dẫn cài sql server cho mac ó

Thông thường sinh viên khoa công nghệ thông tin của các trường đều có một học phần bắt buộc là cơ sở dữ liệu, và hầu hết các máy trên trường đại học thì đều chạy hệ điều hành windows. Đối với các bạn xài máy tính windows, hoặc cũng có thể là linux, điều đó thật sự là dễ dàng cho các bạn vì chỉ cần lên trang chủ của Microsoft đây là đã có thể tải trực tiếp SQL Server về và sử dụng luôn. Link download: https://www.microsoft.com/en-us/sql-server/sql-server-downloads .

Sau khi vào link download như trên, scroll chuột xuống một chút, như mọi người nhìn trên hình kia thì hai nền tảng hệ điều hành là Windows và Linux là được Microsoft có vẻ “ưu ái” làm sẵn cho cái app chỉ cần cài về là ổn áp xài thôi, còn MacOS thì lại không có được liệt kê trong ba cái icon trên, mà thay vào đó là cái docker lạ lẫm nào đó. Vậy không lẽ nền tảng hệ điều hành MacOS không cài đặt và sử dụng được SQL Server như hai cái kia ? Đó cũng chính là lý do bài viết này ra đời. ❤

Thiệt ra không có app sẵn thì cũng không phải là không có cách, đi mua con máy mới để sử dụng windows là được thôi mà….😀, nói tới đây chắc các bạn đều nghĩ thôi thì cài win thông qua cái bootcamp trên mac đi cho xong, hoặc không thì cài máy ảo chạy windows thông qua các phần mềm hỗ trợ như là: VirtualBox, VMware Fusion, Parallels Desktop, etc; hmmm…nếu vậy thì sẽ rất là tốn tài nguyên của máy, đặc biệt là những bạn nào trót lỡ mua con mac 128gb như mình. 🥲

Để ý hơn một tí, nếu nhìn bên dưới chữ “Docker” thì sẽ thấy thêm dòng chữ “Run SQL Server 2019 container image with Docker”.

Docker

Vậy thiệt sự Docker là gì ?

Theo Docker docs thì trong đấy ghi nguyên văn như này:

Docker is an open platform for developing, shipping, and running applications. Docker enables you to separate your applications from your infrastructure so you can deliver software quickly. With Docker, you can manage your infrastructure in the same ways you manage your applications. By taking advantage of Docker’s methodologies for shipping, testing, and deploying code quickly, you can significantly reduce the delay between writing code and running it in production.

Đại loại Docker là một nền tảng mở cho việc phát triển, kiểm thử và triển khai ứng dụng một cách nhanh chóng, Docker giúp đóng gói phần mềm vào các môi trường đầy đủ (gọi là các container), trong container đó có đầy đủ mọi thứ mà ứng dụng của bạn có thể chạy rồi test nhanh trước khi nhảy qua giai đoạn debug và production (giao khách). Sử dụng Docker là một giải pháp nhanh chóng để deploy và thay đổi scale app vào bất kì môi trường đầy đủ cần thiết nào mà mọi người biết chắc chắn code của mọi người có thể chạy một cách ngon lành (nếu không có bug 😀). Và thông qua Docker mọi người có thể cài và chạy SQL Server như các nền tảng khác !

Nếu tới đây mọi người có thể vẫn không tin lắm vào sự bá đạo của Docker thì các bạn thử google thử hoặc vào link đây để đọc so sánh Docker với máy ảo (Virtual Machine): https://geekflare.com/docker-vs-virtual-machine/ .

Docker architecture

Khi bạn sử dụng Docker, bạn đang tạo và sử dụng images, containers, networks, volumes, plugins, và một số object khác. Toàn bộ mọi thứ các bạn có thể tìm ra tường tận và chi tiết các định nghĩa thông qua đây ◁.

Chú ý bước tìm hiểu các định nghĩa và hiểu được các định nghĩa ấy của Docker là QUAN TRỌNG NHẤT, vì khi các bạn không hiểu được các định nghĩa trong Docker thì các bước sau các bạn không biết tại sao mình lại phải làm như vậy.

Vì Linux và MacOS đều dựa trên nền tảng Unix, vì vậy không việc gì Linux cài được mà MacOS lại không cài được, chỉ là theo một cách hơi “khác” một chút thôi.

Bây giờ thì chúng ta sẽ nhảy vào công việc chính.

Cài đặt Docker lên máy Mac

Đầu tiên các bạn đến trang chủ của Docker, đợi tí cho web load hoàn chỉnh đã; rồi trỏ con chuột đến phần Docker Desktop trong mục Products trên thanh navbar như trong hình rồi click dô đó:

Trang chủ Docker

Sau khi đợi mọi thứ đã an bài...ý mình là trang Docker Desktop load xong, các bạn sẽ thấy giao diện như trong hình, click vào ô có dòng chữ “Download for Mac” như hình bên dưới rồi ngồi đợi chút cho file .dmg tải về rồi double click vào file đấy để tiến hành cài đặt Docker.

Docker Desktop

Nếu quá trình cài đặt có vấn đề gì thì các bạn nhớ check mục Security & Privacy trong System Preferences trước, bằng cách nhấn tổ hợp phím command + space (thanh dấu cách) rồi gõ vài chữ đầu ‘Sys’…. là nó sẽ ra ngay rồi enter, lúc đó mọi người chỉ việc bấm vào thôi, thông thường khi cài app bên ngoài cho máy Mac thì mặc định hệ thống của Mac sẽ không cho phép cài, mà phải vào Security & Privacy, bấm vào nút có dòng chữ “Open it anyway”.

Sau khi cài đặt Docker xong thì nhớ kéo cái icon Docker ấy vào mục Application như hình bên dưới:

Khởi động Docker

Sau khi khởi động Docker thì các bạn ngó lên thanh trên cùng trên màn hình Mac thì sẽ thấy một cái icon nhỏ nhỏ như hình trên, click vào sẽ hiện ra một cái list, click chọn mục “Preference…”.

Mặc định thì Docker sẽ có 2gb bộ nhớ đã được cấp sẵn cho nó nếu bạn muốn khởi tạo và sử dụng một container nào đấy. Nhưng SQL Server thì cần ít nhất 3.25gb để chạy, nên để cho an toàn thì mình nên tăng dung lượng bộ nhớ khi có thể.

Sau khi click vào Preferences thì trước mắt sẽ hiện ra một cửa sổ như bên dưới:

dockerDesktop’s windows

Click vào mục “Resources” rồi chỉnh các thiết đặt như hình bên dưới, sau đó chỉ việc ấn “Apply & Restart” rồi ngồi đợi thôi. (Sau khi hoàn tất thì cái button Apply & Restart nó không có hiện màu xanh nữa nha 🦾).

Setup

Download SQL Server

Các bạn tiếp tục nhấn tổ hợp phím command + space rồi gõ terminal để bắt đầu việc sử dụng tới cửa sổ dòng lệnh (CLI), ở đây mình ko dùng terminal có sẵn của MacOS mà mình dùng hyper, cũng là terminal nhưng đối với mình mình thích dùng cái đó hơn là cái terminal có sẵn.

hyper.is

Để kiểm tra xem xem là docker đã thực sự có trong máy của mình chưa thì các bạn gõ “docker” vào terminal rồi enter

Nếu Docker đã có rồi thì trên màn hình các bạn sẽ thấy giống như này:

Như các bạn thấy thì sau khi enter nó ra một nùi option như thế thì đúng là máy bạn đã có được docker chạy trên máy hẳn hoi rồi đó, giờ thì mình kiếm một cái docker image để pull về, các bạn vào trang web này để kiếm bản mới nhất của SQL server container mà pull về: https://hub.docker.com/_/microsoft-mssql-server?tab=description

Chạy lệnh sau trong terminal:

sudo docker pull mcr.microsoft.com/mssql/server

Nếu trường các bạn xài bản SQL server 2017 thì các bạn thêm option :2017-latest, nếu thêm vào thì câu lệnh trong terminal sẽ như này:

sudo docker pull mcr.microsoft.com/mssql/server:2017-latest

Còn không thì chơi luôn bản 2019:

sudo docker pull mcr.microsoft.com/mssql/server:2019-latest

Nhập lệnh như trên xong thì enter để cho docker tự động pull về các resources cần thiết, trong lúc đợi thì mọi người cứ ngồi chơi xơi nước (à vì có “sudo” ở trên đầu lệnh nên là khi enter rồi thì phải nhập pass của máy Mac cho xong rồi enter tiếp nhé). 😀

Lúc đang pullDone !

Khi xong xuôi, các bạn chạy thêm lệnh docker ps để kiểm tra xem có cái docker container nào đang chạy không nhea:

Sau khi enter các bạn chỉ có thấy vài dòng chữ như là CONTAINER ID, IMAGE, COMMAND,… và ngoài dòng chữ in hoa đó ra không còn thấy gì khác thì vẫn chưa có một cái container được tạo ra; tới thời điểm này là lúc mình sử dụng tới cái sql server docker image mà chúng ta đã pull về khi nãy.

Vẫn là trên terminal, các bạn chạy lệnh sau:

docker run -d --name theNameOfSQLServer -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=yourpasswd' -p 1433:1433 mcr.microsoft.com/mssql/server:2019-latest

Giải thích parameters:

  • -d : tham số này khởi chạy Docker ở chế độ daemon, ý là container có thể chạy trên nền một cách bình thường mà không cần phải khư khư giữ cái màn hình terminal sau khi start cho nó chạy, nếu các bạn bỏ tham số này thì khi command + Q (ý mình là quit terminal) thì đồng thời docker container khi đó cũng ngừng luôn.
  • — name : nhìn lên cái tên thì cũng đủ hiểu là tham số này để thiết lập cái tên cho cái container SQL Server mà chúng ta đang cố gắng implement..sau khi ghi tham số này xong thì cách ra một cái là mình đặt tên liền, như ví dụ như trên thì mình đặt tên là theNameOfSQLServer.
  • -e : tham số này là viết tắt cho từ ‘ environment ’, mọi người nếu hiểu đúng là ‘môi trường’ thì cũng không sai, mà cái này không có lá không khí sông suối các thứ và được nằm gọn trong máy tính, đó gọi là môi trường thực thi, giống như là muốn code rồi biên dịch được code C# trên mấy con máy Mac thì mọi người phải cài trước cái .NET core rồi mới biên dịch được code C# vậy đó…sau tham số này sẽ là một vài thiết đặt quan trọng.
  • ‘ACCEPT_EULA=Y’ : chữ Y in hoa kia là viết tắt cho từ YES, còn EULA là viết tắt cho nguyên cụm từ “End User Licence Agreement” => có nghĩa là khi bạn thêm tham số này vào sau -e thì có nghĩa là bạn đã xác nhận cho việc chấp nhận thỏa thuận cấp phép cho người dùng cuối, nghe có vẻ khó hiểu quá nhỉ, nếu thắc mắc thì mọi người cứ vào cái End-User Licensing Agreement mà đọc. Tham số này là bắt buộc khi các bạn muốn cài SQL server của Linux lên cho máy Mac của bạn.
  • ‘SA_PASSWORD=yourpasswd’ : là mật khẩu của sysAdmin database, ở đây mình đặt là yourpasswd, còn mọi người muốn đặt kiểu gì thì tuỳ ý, có userid = ‘sa’ , mật khẩu sysAdmin db được sử dụng để kết nối với SQL Server khi container đang chạy. Lưu ý nhỏ (nhỏ nhưng quan trọng): Mật khẩu này cần bao gồm ít nhất 8 ký tự thuộc ít nhất ba trong số bốn kiểu này: chữ hoa, chữ thường, số và ký hiệu không phải chữ và số. Đó là quy tắc đặt pass mà mình xem được trong Dockerhub.
  • -p : tham số này viết tắt cho từ port, sau tham số này là hai cái port 1433:1433. Nghĩa là tham số này sẽ giúp ánh xạ cổng 1433 của máy Mac đến cổng 1433 của container. Nếu thực sự muốn hiểu thêm về cái này thì tham khảo Container Networking.
  • mcr.microsoft.com/mssql/server:2019-latest : cái cuối cùng đây thì nhìn quen quá, đó chính là cái image ban đầu mà mình đã pull về, việc thêm vào một tham số có gắn liền cái tên giống với cái image đã pull về khi nãy là bảo cho docker biết rằng máy Mac của mình sẽ sử dụng cái image nào mà mình đã pull về (Trong trường hợp đã pull về nhiều phiên bản thì cái này quả thực là hiệu quả và minh bạch).

Vậy là đã xong phần giải thích các tham số (ngoài cách gọi “tham số” ra thì mình có thể gọi là “biến môi trường” aka “Environment-Variables”), nếu muốn biết nhiều hơn các tham số mà mình đã giải thích bên trên thì các bạn vào đây và tìm hiểu tiếp, chucmayman. 🥲

Lưu ý một chút về Password Strength: nếu các bạn không theo quy tắc đặt pass mà Dockerhub đã đề ra thì trong terminal có thể các bạn sẽ thấy thông báo như thế này:

Microsoft(R) SQL Server(R) setup failed with error code 1. Please check the setup log in /var/opt/mssql/log for more information.

Nếu không phải dòng thông báo tựa tựa như thế thì cứ đọc cho kĩ cái câu output mà terminal đã thông báo ra, copy cái câu output đó, rồi tắt máy đi ngủ…🥲 Giỡn tí thôi, thông thường các bạn đọc mà hiểu cái sai của các bạn là gì thì các bạn…vẫn sẽ lên google rồi paste cái câu đó vào rồi mò tiếp, khuyến cáo sử dụng google cho tích cực nhé. 🖤

Giờ thì chạy lại lệnh docker ps trong terminal để xem xem có gì chưa.

Sau khi docker ps để kiểm tra xong thì tất cả các tham số mà mình đã khởi tạo đều hiện ra (như hình trên), đến lúc này thì thực sự đã có container đang chạy trên máy Mac của chúng ta.

Nếu chúng ta quit luôn cả Docker desktop thì sẽ như thế nào ?

Trở lại nhìn thanh menu trên máy Mac nếu các bạn click vào cái icon docker như lúc đầu mà mình click vào để trỏ tới phần Preferences, bây giờ không click vào đó nữa mà click vào chỗ “Quit Docker Desktop” thì Docker Desktop đúng nghĩa là tắt hoàn toàn trên máy Mac của các bạn (cứ tắt hẳn hoàn toàn cái terminal đi). Vậy lúc này cái container SQL server còn chạy không nhỉ ?

Note: để tắt hẳn hoàn toàn một app trên MacOS thì các bạn xài tổ hợp phím command + option + escape nhé (tính năng đó được gọi là force quit, trông cứ hao hao alt + F4 của nền tảng windows ấy nhỉ), sau khi ấn tổ hợp phím đó xong thì trên màn hình máy Mac sẽ hiện ra một cửa sổ nhỏ chứa toàn bộ app ‘ còn chạy ’ trên máy Mac của các bạn, muốn tắt hẳn hoàn toàn cái nào thứ cứ click vào cái icon app ấy rồi ấn force quit thôi, chứ không phải cứ di cái trachpad (con chuột) tới chỗ button hình tròn màu đỏ trên góc trái rồi click là nó sẽ tắt hoàn toàn đi đâu. 🥲

Force Quit

Các bạn mở lại terminal rồi kiểm tra tiếp là được thôi. muốn kiểm tra xem container còn chạy không thì cứ docker ps là sẽ xem được.

Như các bạn có thể thấy trên màn hình cái terminal mà mình đang sử dụng thì không hiện các dòng chữ in hoa như là CONTAINER ID, IMAGE, COMMAND,…như thường lệ sau khi chạy docker ps như trước kia nữa, là do mình đã quit hẳn hoàn toàn luôn cả Docker Desktop trên máy rồi.

Hãy kiên trì và thử tiếp, để chạy một container mà chúng ta đã trầy trật tạo nãy giờ, thì trên terminal mình dùng lệnh docker start + tên_của_container, như trong trường hợp của mình sẽ là:

docker start theNameOfSQLServer

Và sau khi enter kết quả vẫn sẽ là..

Nói gì thì nói chứ thấy output ra có chữ Error là thấy không ổn rồi, lí do là vì sao ? Vì chưa bật app Docker Desktop….thiệt ra mỗi lần muốn làm bất kể việc gì với Docker thì mọi người đều phải bật app Docker Desktop lên trước, bật xong rồi thì nhìn lên thanh menu bar trên cùng có cái icon con cá voi xanh quen thuộc của Docker.

Docker Desktop đã chạy, trở ngược lại terminal rồi gõ lại thử một vài lệnh cơ bản thử xem.

  • Ban đầu là start cái SQL server container lên trước
  • Sau đó kiểm tra bằng docker ps

Mũi tên màu xanh là trước khi chạy app Docker Desktop, màu đỏ thì là sau khi chạy Docker Desktop.

Nói nôm na tới đây thì có thể nói là đã có SQL Server trong máy mac của các bạn rồi đó, giờ chỉ cần tới cái GUI nữa để viết query thôi, về cái này thì mình highly recomment mò tới Azure Data Studio (tiền thân là cái SQL Operations Studio). Các bạn cứ download về đi vì cái app này free nha, dù là của Microsoft nhưng vẫn free nha.

Azure Data Studio

Vẫn là những bước cài đặt đơn giản như cài đặt cái Docker Desktop vậy đó. Nhớ kéo cái icon vào mục Application là ổn rồi, giờ mình chỉ việc launch cái app này và xài thôi, sau khi mở app:

Đầu tiên sau khi launch cái app mình cứ ngỡ đó là Visual Studio Code, quá giống, đúng là cùng một nơi mà ra. Cũng là command + shift + X thì sẽ mở ra một đống extensions nếu cài thì có thể mở rộng ra tính năng của app (chỗ mũi tên màu đỏ). Có một cái các bạn nên cẩn thận là phần đăng nhập với cái bánh răng (chỗ mình trỏ mũi tên màu vàng vào). Phần đăng nhập chắc đăng nhập bằng MS account hoặc là tài khoản sinh viên (các bạn cứ thử xem chứ mình không đụng tới luôn), còn về cái bánh răng thì khi click vào nó sẽ ra một cái list:

Cũng có command Palette y chang VScode luôn nhỉ…nhưng quan tâm hơn thì nên quan tâm cái Settings, thường thì mình hay vào settings để chỉnh lại cái Update: Mode, chuyển sang thành manual, để tránh trường hợp bad network mà cái app nó cứ check xem có bản cập nhật mới không thì đợi rất lâu. 🥲

Vậy là các phần cơ bản đã xong, bây giờ mình tiến hành kết nối Azure Data Studio với cái container (SQL Server) mà mình đã tạo ban đầu.

  • Click vào cái button có phần text là Add Connection trước cái đã

Các bạn chú ý phần Connection Details :

  • Server : localhost, [port number] (port ở đây là cái port mà mình đã thiết đặt lúc tạo container đó, nếu không nhớ thì cứ mở terminal lên rồi phang docker ps tiếp là thấy). Trường hợp của mình là localhost, 1433 .
  • Authentication Type : SQL Login
  • User name : thường là “sa” .
  • Password : là cái pass mà mình đã tạo hồi nãy, như trường hợp của mình là yourpasswd. Nếu lười thì cứ click luôn chỗ “Remember Password” 🥲
  • Mấy cái cuối cứ để im đó chưa cần quan tâm.

Điền xong hết rồi ấn Connect thôi, xong rồi cửa sổ của cái app nó sẽ như này

Vậy là đã ổn rồi đó, giờ mình viết thử vài câu query thử xem có ổn áp không, để bắt đầu nhào vào viết truy vấn liền thì các bạn trỏ vào mục New Query.

Sau khi ấn New Query thì cứ đợi cỡ 5s, khoan hoẵng vội, dù gì đây cũng là lần đầu xài tới. Sau 5s thì các bạn thử viết câu truy vấn nào đó rồi thử Run xem sao, trong ảnh dưới là mình đã thử ghi vài ba câu truy vấn, từng mũi tên là các output tương ứng (sau khi viết xong thì các bạn F5 hoặc là click run như chỗ mũi tên màu vàng chỉ vào như hình dưới).

Ở đây thì mình sẽ không giải thích các câu lệnh truy vấn làm chi, vì nó rất nhiều…các bạn nhớ bấm command + S, để lưu thành một file .sql hoàn chỉnh khi viết xong (theo mình thì cứ lưu ngoài Desktop đi cho dễ kiếm), nếu không thì Azure Data Studio (hoặc phần lớn các IDE khác có thể chạy trên Mac) sẽ vẫn đang trong trạng thái chờ, điều này sẽ làm hao pin của máy Mac, để nhận biết điều đó thì khá dễ, nhìn cái button đỏ đỏ nhỏ nhỏ trên góc trái trên cùng nó vẫn còn cái chấm đen ở giữa là biết ngay.

Bấm command + S, chọn chỗ lưu nữa, Save là xong…💝

Tới đây là đã xong rồi đó, thực tế khi học trên giảng đường học thuật thì phần lớn chúng ta sẽ học cách thao tác hầm bà lằng với cái đề bài mà thầy cô đưa ra, từ việc tạo table đến…đến cái gì gì đó cao siêu mà mình cũng không nhớ nỗi 🥲. Nhưng nếu muốn thao tác với cơ sở dữ liệu mẫu có sẵn thì mình sẽ chỉ các bạn chỗ lấy, download về thôi. Vào link này.

Trang mà mình kêu các bạn vào thì cũng là trang của Microsoft, nên đừng quan ngại, lưu ý là các bạn tạo container chạy SQL Server bản nào thì các bạn phải nhớ, như mình thì là 2019 (lưu ý những phần mình đóng khung đỏ, còn cái khung xanh cyan là phần giải thích cho từng cái sample).

Mình chọn OLTP vì như dòng chữ kia: “ Nếu bạn không chắc là bạn cần database sample nào, thì bắt đầu với bản OLTP mà trùng khớp với lại phiên bản của SQL Server ”.

Download về không nhanh lắm…nên trong lúc đợi cứ làm ly cafe cái đã.

Import cơ sở dữ liệu mẫu vào SQL Server bằng Azure Data Studio

Các bạn mở lại cái terminal và nhập lệnh sau:

docker cp :/var/opt/mssql/data

Như trường hợp của mình sẽ là:

Chắc chắn khi nhìn vào đây, một số người không biết cái container_id là dãy số dãy chữ ở đâu, muốn kiểm tra điều gì, cứ vào terminal mà gõ docker ps là sẽ thấy.

Giờ thì trở lại Azure Data Studio thôi, các bạn click vào localhost, 1433, (sa), sau khi click vào thì chọn phần Restore .

Sau khi click vào Restore xong thì các bạn chọn tới mục Restore from rồi chọn mục Backup file trong dropdown list như hình bên dưới.

Tiếp đến là Backup file path, click vào dấu ba chấm như trong hình.

Sau khi click vào thì thấy hiện cửa sổ bên phải như hình dưới, giờ thì kéo kiếm cái file database mẫu ban nãy, hồi nãy chúng ta chạy bằng lệnh cp là copy vào cái đường dẫn thư mục /var/opt/mssql/data…thử kiếm xem nó có nằm trong cái đường dẫn đó không.

Xong rồi bấm ok, tiếp theo chọn Restore nữa là xong.

Sau khi bấm Restore xong thì Azure Data Studio sẽ back ra màn hình localhost ban đầu, lúc này thì các bạn refresh lại cái localhost, 1433; chuột trái vào chỗ localhost, 1433, (sa). Rồi click refresh.

Kiểm tra xem cái database mẫu có chưa, nếu có rồi thì bắt tay vào thực hành.

Vậy là có rồi, thao tác với nó chút, click vào New Query như ban nãy rồi chọn cái mục AdventureWorks2019, sau khi chọn đúng cái AdventureWorks2019 thì có thể viết truy vấn vào cái database mẫu được rồi.

Thử viết xem, SELECT * FROM Person.CountryRegion

Vậy là đã xong rồi đó ! Bravo !!!! Cảm ơn các bạn và mọi người đã quan tâm và đọc hết bài viết này của mình….THANKS FOR READING ! 💻