Ubuntu上SQL Server网络配置指南
在Ubuntu上配置SQL Server网络需完成基础环境准备、网络参数调整、防火墙开放、远程访问启用及验证测试五大步骤,以下是详细操作流程:
若尚未安装SQL Server,需先通过以下命令完成安装(以Ubuntu 22.04/SQL Server 2022为例):
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
sudo add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list)"
sudo apt-get update && sudo ACCEPT_EULA=Y apt-get install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
sudo systemctl start mssql-server && sudo systemctl enable mssql-server
SQL Server默认仅允许本地连接(localhost),需通过mssql-conf工具启用TCP/IP:
sudo /opt/mssql/bin/mssql-conf set network.tcpip true
若需更改默认的1433端口(如改为1434),执行以下命令:
sudo /opt/mssql/bin/mssql-conf set network.tcpport 1434
无论修改端口还是启用协议,均需重启SQL Server:
sudo systemctl restart mssql-server
通过mssql-conf查看当前网络设置,确认配置正确:
sudo /opt/mssql/bin/mssql-conf list network
输出应包含tcpip = true及设置的端口号。
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配置文件:
编辑/etc/sqlserver/mssql.conf,确保[network]部分包含以下内容:
[network]
tcpip = true
保存后重启服务:
sudo systemctl restart mssql-server
配置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;
本地连接测试:
使用sqlcmd在Ubuntu本机连接SQL Server,验证服务是否正常:
sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'YourStrongSAPassword'
若提示1>,则表示连接成功。
远程连接测试:
在另一台机器上使用SQL Server Management Studio(SSMS)或sqlcmd连接:
192.168.1.100)、端口(如1433)、身份验证方式(SQL Server身份验证)及登录名密码。sqlcmd -S 192.168.1.100,1433 -U RemoteUser -P 'YourSecurePassword' -d master
若能成功连接并执行SQL命令,则说明网络配置正确。
mssql-conf list network)、防火墙是否开放端口(ufw status)、SQL Server身份验证是否启用(SELECT SERVERPROPERTY('IsIntegratedSecurityOnly'),返回0表示启用)。sudo netstat -tulnp | grep 1433查看占用进程,修改SQL Server端口或停止占用进程。sudo systemctl status mssql-server查看服务状态,若未启动,执行sudo systemctl start mssql-server。