Chuyển đến nội dung chính

Docker: Cài đặt MS SQL Server Linux với Docker - Part 7

Trong bài viết này, bạn sẽ sử dụng Docker để pull và run image chứa SQL Server 2019 (15.x) Linux. Sau đó, bạn có thể kết nối với sqlcmd để tạo cơ sở dữ liệu và thực hiện các truy vấn.

Các lệnh trong bài viết này được thực hiện trong môi trường PowerShell chạy trong Windows.

Một số điểm mà bạn cần lưu ý:

  • User quản trị mặc định: sa.
  • Password được thiết lập bằng biến môi trường SA_PASSWORD (Đặt password phải mệnh, từ 8 ký tự, gồm số, chữ).
  • Thiết lập biến môi trường ACCEPT_EULA=Y
  • Port mặc định là 1433. Chúng ta sẽ đổi sang port 1431

Pull và run container SQL Server

Pull image
docker pull mcr.microsoft.com/mssql/server:2019-latest
Run Linux container
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=<YourStrong@Passw0rd>" `
   -p 1431:1433 --name sql1 --hostname sql1 `
   -d `
   mcr.microsoft.com/mssql/server:2019-latest
Lưu ý:
  • Port SQL Server là 1431
  • Tên container là sql1
  • -d: Chạy container ở chế độ background (daemon).
  • mcr.microsoft.com/mssql/server:2019-latest: tên SQL Server Linux container image.
Trường hợp bạn muốn đổi password cho account sa:
docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd `
   -S localhost -U SA -P "<YourStrong@Passw0rd>" `
   -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
Trường hợp bạn muốn chạy một câu lệnh duy nhất (không cần pull rồi chạy container);
docker run -e 'ACCEPT_EULA=Y' -e "SA_PASSWORD=YourPass@123!" -p 1431:1433 --name sql1 -d mcr.microsoft.com/mssql/server:2019-latest

Sử dụng SQLCOMMAND trong container

SQLCMD là một công cụ đi kèm với SQL Server cho phép ta thực thi câu truy vấn SQL, hay thực thi một Stored Procedure, hay chạy một file SQL Script từ dòng lệnh giống như ứng dụng CMD.

Để viết nhiều câu lệnh query liên tiếp, bạn bật bash session:

docker exec -it sqlserver  "bash"
Hoặc Shell
docker exec -it sqlserver /bin/sh
Tạo đối tượng SQLCMD để thực thi SQL query:
$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P '<Your_Password>'
1>
Giả sử bạn cần tạo database TestDB. Đầu tiên bạn thự hiện việc đăng nhập, gõ query, và kết thúc bằng lệnh GO
PS C:\WINDOWS\system32> docker exec -it sql1 "bash"
mssql@sql1:/$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "<Your_Password>"
1> CREATE DATABASE TestDB;
2> SELECT Name from sys.databases;
3> GO
Name                                                                                                                    
--------------------------------------------------------------------------------------------------------------------------------
master                                                                                                                  
tempdb                                                                                                                  
model                                                                                                                   
msdb                                                                                                                    
TestDB                                                                                                                  

(5 rows affected)
1>
Trường hợp bạn muốn Insert và Query data:
1> USE TestDB;
2> CREATE TABLE People(Id INT, Name NVARCHAR(200));
3> INSERT INTO People VALUES(1, 'Abraham Lincoln')
4> GO
Changed database context to 'TestDB'.

(1 rows affected)
1> SELECT * FROM People
2> GO
Id          Name                                                                                                        
----------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
          1 Abraham Lincoln                                                                                             

(1 rows affected)
1>
Để thoát khỏi bash và SQLCMD, bạn gõ lệnh exit 2 lần:
1> exit
mssql@sql1:/$
Stop container và remove container:
docker stop sql1
docker rm sql1

Sử dụng Azure Data Studio

Nếu bạn không quen thuộc sử dụng SQLCMD, thì SQL Server Management hoặc Azure Data Studio là một giải pháp thay thế dễ dàng. Thực ra mình thích xài tools hơn, vì trực quan dễ hiểu.
Mở Azure Data Studio lên, nhập:
Server: localhost,1431
User: sa
Pass: <Your password>

Tham khảo

https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker

https://khalidabuhakmeh.com/running-sql-server-queries-in-docker

Chúc các bạn thành công

P/s: Trong bài viết tới, mình sẽ hướng dẫn các bạn tạo file Docker compose để đơn giản hóa việc setup container  

Nhận xét

Bài đăng phổ biến từ blog này

[ASP.NET MVC] Authentication và Authorize

Một trong những vấn đề bảo mật cơ bản nhất là đảm bảo những người dùng hợp lệ truy cập vào hệ thống. ASP.NET đưa ra 2 khái niệm: Authentication và Authorize Authentication xác nhận bạn là ai. Ví dụ: Bạn có thể đăng nhập vào hệ thống bằng username và password hoặc bằng ssh. Authorization xác nhận những gì bạn có thể làm. Ví dụ: Bạn được phép truy cập vào website, đăng thông tin lên diễn đàn nhưng bạn không được phép truy cập vào trang mod và admin.

ASP.NET MVC: Cơ bản về Validation

Validation (chứng thực) là một tính năng quan trọng trong ASP.NET MVC và được phát triển trong một thời gian dài. Validation vắng mặt trong phiên bản đầu tiên của asp.net mvc và thật khó để tích hợp 1 framework validation của một bên thứ 3 vì không có khả năng mở rộng. ASP.NET MVC2 đã hỗ trợ framework validation do Microsoft phát triển, tên là Data Annotations. Và trong phiên bản 3, framework validation đã hỗ trợ tốt hơn việc xác thực phía máy khách, và đây là một xu hướng của việc phát triển ứng dụng web ngày nay.

Tổng hợp một số kiến thức lập trình về Amibroker

Giới thiệu về Amibroker Amibroker theo developer Tomasz Janeczko được xây dựng dựa trên ngôn ngữ C. Vì vậy bộ code Amibroker Formula Language sử dụng có syntax khá tương đồng với C, ví dụ như câu lệnh #include để import hay cách gói các object, hàm trong các block {} và kết thúc câu lệnh bằng dấu “;”. AFL trong Amibroker là ngôn ngữ xử lý mảng (an array processing language). Nó hoạt động dựa trên các mảng (các dòng/vector) số liệu, khá giống với cách hoạt động của spreadsheet trên excel.