温馨提示×

Ubuntu SQL Server的网络配置怎么做

小樊
44
2025-10-26 14:28:17
栏目: 云计算

Ubuntu上SQL Server网络配置指南
在Ubuntu上配置SQL Server网络需完成基础环境准备网络参数调整防火墙开放远程访问启用验证测试五大步骤,以下是详细操作流程:

一、前提:安装SQL Server

若尚未安装SQL Server,需先通过以下命令完成安装(以Ubuntu 22.04/SQL Server 2022为例):

  1. 导入Microsoft GPG密钥:
    wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
    
  2. 注册SQL Server Ubuntu仓库:
    sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"
    
  3. 更新包列表并安装:
    sudo apt-get update && sudo ACCEPT_EULA=Y apt-get install -y mssql-server
    
  4. 运行配置工具设置SA密码:
    sudo /opt/mssql/bin/mssql-conf setup
    
  5. 启动服务并设置开机自启:
    sudo systemctl start mssql-server && sudo systemctl enable mssql-server
    

二、配置SQL Server网络参数

1. 启用TCP/IP协议

SQL Server默认仅允许本地连接(localhost),需通过mssql-conf工具启用TCP/IP:

sudo /opt/mssql/bin/mssql-conf set network.tcpip true

2. 修改监听端口(可选)

若需更改默认的1433端口(如改为1434),执行以下命令:

sudo /opt/mssql/bin/mssql-conf set network.tcpport 1434

3. 重启服务使配置生效

无论修改端口还是启用协议,均需重启SQL Server:

sudo systemctl restart mssql-server

4. 验证配置

通过mssql-conf查看当前网络设置,确认配置正确:

sudo /opt/mssql/bin/mssql-conf list network

输出应包含tcpip = true及设置的端口号。

三、配置防火墙允许SQL Server端口

Ubuntu默认使用ufw(Uncomplicated Firewall)作为防火墙,需开放SQL Server端口(默认1433或自定义端口):

sudo ufw allow 1433/tcp  # 若修改了端口,替换为对应值
sudo ufw reload          # 重新加载防火墙规则

验证端口是否开放:

sudo ufw status | grep 1433

输出应显示1433/tcp ALLOW

四、启用SQL Server远程连接

默认情况下,SQL Server仅允许本地连接。需通过以下步骤允许远程访问:

  1. 修改SQL Server配置文件
    编辑/etc/sqlserver/mssql.conf,确保[network]部分包含以下内容:

    [network]
    tcpip = true
    

    保存后重启服务:

    sudo systemctl restart mssql-server
    
  2. 配置SQL Server身份验证(可选但推荐):
    若需用SQL Server身份验证(而非仅Windows身份验证),需创建登录名并授权:

    # 使用sqlcmd工具连接SQL Server(默认SA账户)
    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'YourStrongSAPassword'
    

    在SQLCMD中执行以下命令:

    -- 创建SQL登录名
    CREATE LOGIN [RemoteUser] WITH PASSWORD = 'YourSecurePassword';
    -- 创建数据库用户并关联登录名
    USE [master];
    CREATE USER [RemoteUser] FOR LOGIN [RemoteUser];
    -- 授予数据库权限(如读取、写入)
    EXEC sp_addrolemember 'db_datareader', 'RemoteUser';
    EXEC sp_addrolemember 'db_datawriter', 'RemoteUser';
    GO
    

    退出sqlcmd:

    EXIT;
    

五、验证网络配置

  1. 本地连接测试
    使用sqlcmd在Ubuntu本机连接SQL Server,验证服务是否正常:

    sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'YourStrongSAPassword'
    

    若提示1>,则表示连接成功。

  2. 远程连接测试
    在另一台机器上使用SQL Server Management Studio(SSMS)或sqlcmd连接:

    • SSMS:输入服务器IP地址(如192.168.1.100)、端口(如1433)、身份验证方式(SQL Server身份验证)及登录名密码。
    • sqlcmd
      sqlcmd -S 192.168.1.100,1433 -U RemoteUser -P 'YourSecurePassword' -d master
      

    若能成功连接并执行SQL命令,则说明网络配置正确。

常见问题排查

  • 无法远程连接:检查SQL Server是否启用TCP/IP(mssql-conf list network)、防火墙是否开放端口(ufw status)、SQL Server身份验证是否启用(SELECT SERVERPROPERTY('IsIntegratedSecurityOnly'),返回0表示启用)。
  • 端口冲突:若1433端口被占用,可通过sudo netstat -tulnp | grep 1433查看占用进程,修改SQL Server端口或停止占用进程。
  • 服务未启动:通过sudo systemctl status mssql-server查看服务状态,若未启动,执行sudo systemctl start mssql-server

0