Ubuntu下SQL Server连接问题解决指南
确保SQL Server服务正在运行,这是连接的基础。使用以下命令查看服务状态:
sudo systemctl status mssql-server
若服务未启动,执行以下命令启动并设置开机自启:
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
SQL Server默认使用1433端口,需确保防火墙允许该端口的TCP流量。若使用ufw
防火墙,执行:
sudo ufw allow 1433/tcp
若使用firewalld
(如CentOS),需执行:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
sqlcmd
工具,检查连接命令的主机名(-S
)、端口(-P
,若非默认需指定)、用户名(-U
)、密码(-P
)是否正确。例如:sqlcmd -S localhost -U SA -P your_password
mssql-tools
包含sqlcmd
等命令行工具,unixodbc-dev
用于ODBC驱动支持。若未安装,执行:
sudo apt-get update
sudo apt-get install mssql-tools unixodbc-dev
安装后,可通过sqlcmd -?
验证工具是否可用。
使用mssql-conf
工具确认SQL Server是否允许远程连接及端口设置。例如,查看当前端口:
sudo /opt/mssql/bin/mssql-conf list
若需修改端口,执行:
sudo /opt/mssql/bin/mssql-conf set network.port 新端口
sudo systemctl restart mssql-server
确保配置文件(如/etc/mssql/mssql.conf
)中的network.tcp.port
设置正确。
日志文件位于/var/log/mssql/errorlog
,包含详细的连接失败原因(如认证失败、端口冲突)。使用以下命令查看最新日志:
sudo tail -n 50 /var/log/mssql/errorlog
根据日志中的错误信息(如“Login failed for user”)进一步排查。
RUN sed -i 's/MinProtocol = TLSv1.2/MinProtocol = TLSv1/g' /etc/ssl/openssl.cnf
SA
)有远程访问权限,或创建新的登录账户并授权:CREATE LOGIN your_user WITH PASSWORD = 'your_password';
USE your_database;
CREATE USER your_user FOR LOGIN your_user;
GRANT SELECT, INSERT ON your_table TO your_user;