Docker

安装

  1. 查看 docker 官网 sqlserver 镜像源:

    1
    https://hub.docker.com/_/microsoft-mssql-server
  2. 获取 docker 镜像

    1
    docker pull mcr.microsoft.com/mssql/server:2017-latest
  3. 查看镜像

    1
    docker images

启动

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
docker run --name msserver -d \
-e 'ACCEPT_EULA=Y' \
-e 'MSSQL_SA_PASSWORD=MyPassWord123' \
-p 1433:1433 \
-v `pwd`/Users/wangwz/docker/msserver/data:/var/opt/mssql \
mcr.microsoft.com/mssql/server:2017-latest


–name msserver:指定容器名
-e ‘ACCEPT_EULA=Y’:同意许可协议
-e ‘MSSQL_SA_PASSWORD=MyPassWord123’:MSSQL_SA_PASSWORD为密码,要求是最少8位的强密码,要有大写字
母,小写字母,数字以及特殊符号,不然会有一个大坑(docker启动sqlserver容器后过几秒就停止了)
-p 1433:1433:绑定端口,其中1433是主机的端口,1433是docker内部SQLserver的端口,我们使用1433端口的时候会
自动映射到docker内部的1433端口
-v `pwd`/Users/wangwz/docker/msserver/data:/var/opt/mssql:数据卷映射至本机 /Users/wangwz/docker/msserver/data 文件夹,没有会自动创建
-d 后台运行

进入容器操作

1
2
3
4
5
-- 进入sqlserver容器
sudo docker exec -it msserver "bash"

-- 登录用户sa,进行数据库操作
/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "MyPassWord123"

更改 sa 的登录密码

  • 先进入容器
1
sudo docker exec -it msserver "bash"
  • 修改密码
1
/opt/mssql-tools/bin/sqlcmd  -S localhost -U SA -P "MyPassWord123"  -Q 'ALTER LOGIN SA WITH PASSWORD="Root1234"'

使用 Navicat 连接 SQL Server

  • 测试连接如果有报如下错误

    [IM002][Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序 (0)

  • 解决方法

  • 安装 navicat 自带 sqlncli_x64.msi,就在安装目录下,安装后问题解决!

1
2
3
4
5
连接sqlserver 端口号 是加在 ip地址后面的用 逗号 分开格式如下
主机名或ip地址:172.16.10.54,1433
验证:SQL SERVER 验证
用户名:SA
密码:********

命令

参考:https://www.cnblogs.com/xwdreamer/archive/2012/06/25/2562828.html

数据库

  1. 创建数据库

    1
    CREATE DATABASE yaoqishan
  2. 查看版本

    1
    2
    3
    4
    5
    6
    select @@version

    Microsoft SQL Server 2017 (RTM-CU25) (KB5003830) - 14.0.3401.7 (X64)
    Jun 25 2021 14:02:48
    Copyright (C) 2017 Microsoft Corporation
    Developer Edition (64-bit) on Linux (Ubuntu 16.04.7 LTS)
  3. 查看数据库编码

    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage')

    936 简体中文 GBK
    950 繁体中文 BIG5
    437 美国 / 加拿大英语
    932 日文
    949 韩文
    866 俄文
    65001 unicode UFT-8
  4. 修改用户数据库字符集

    1
    2
    3
    4
    5
    6
    7
    8
    alter database yaoqishan collate Chinese_PRC_CI_AS

    # 如果失败,执行下面
    ALTER DATABASE yaoqishan SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    alter database yaoqishan collate Chinese_PRC_CI_AS
    ALTER DATABASE yaoqishan SET MULTI_USER

    # 需要重新导入数据

用户

想成功访问 SQL Server 数据库中的数据, 我们需要两个方面的授权:一、获得准许连接 SQL Server 服务器的权利; 二、获得访问特定数据库中数据的权利(select, update, delete, create table …)

  1. 创建登陆帐户(create login)

    1
    2
    # 创建登录用户 test 密码 123456 数据库 mydb。只有连接权限。默认是 guest 数据库用户身份, 可以访问 guest 能够访问的数据库对象
    create login test with password='123456', default_database=mydb
  2. 创建数据库用户(create user)

    1
    2
    3
    4
    5
    6
    # 切换到 mydb 数据库
    use mydb

    # 创建用户
    create user test for login test with default_schema=dbo
    #指定数据库用户 “dba” 的默认 schema 是 “dbo”,dbo为DataBaseOwner的简写,每个数据库都有一个dbo用户
  3. 赋予数据库用户 test 权限

    1
    2
    exec sp_addrolemember 'db_owner', 'test'
    # 此时,test 就可以全权管理数据库 mydb 中的对象了
  4. 用户 test 访问多个数据库,比如 mydb2。 可以让 sa 执行下面的语句:

    1
    2
    3
    4
    5
    6
    7
    use mydb2
    go
    create user test for login test with default_schema=dbo
    go
    exec sp_addrolemember 'db_owner', 'test'
    go
    # 此时,test 就可以有两个数据库 mydb, mydb2 的管理权限了!
  5. 禁用、启用登陆帐户

    1
    2
    3
    alter login test disable

    alter login test enable
  6. 登陆帐户改名

    1
    2
    alter login test with name=test2
    #提示:在 SQL Server 2005 中也可以给 sa 改名。 《SQL Server 2005 安全性增强:给超级用户 sa 改名》
  7. 登陆帐户改密码:

    1
    alter login test with password='111111'
  8. 数据库用户改名:

    1
    alter user test with name=test2
  9. 更改数据库用户 defult_schema:

    1
    alter user test with default_schema=db2
  10. 删除数据库用户

    1
    drop user test
  11. 删除 SQL Server 登陆帐户

    1
    drop login test