Ubuntu 16.04安装MSSQL失败:无法加载mssql.conf配置文件
针对你在Ubuntu 16.04服务器安装MSSQL时遇到的配置文件加载失败问题,我整理了几个针对性的排查和解决步骤,帮你突破当前的卡点:
问题回顾
你按照微软官方手册完成sudo apt-get install -y mssql-server安装后,运行sudo /opt/mssql/bin/mssql-conf setup回答完配置问题,却收到错误:
sqlservr[8383]: sqlservr: The configuration file '/var/opt/mssql/mssql.conf' failed to load (error: The INI file could not be opened. Errno [2] Filename [mssql.conf])
你确认已用sudo执行命令,且能通过cat正常查看该配置文件,但由于Linux技术经验不足,无法进一步排查。另外你提到内核问题无法使用Docker替代,所以我们聚焦在原生安装的修复上。
针对性解决方案
1. 修复配置文件的权限与归属
虽然你能读取文件,但MSSQL服务是以mssql系统用户身份运行的,很可能是该用户没有读写配置文件的权限。执行以下命令修正:
sudo chown mssql:mssql /var/opt/mssql/mssql.conf sudo chmod 600 /var/opt/mssql/mssql.conf
解释:chown把文件归属改成mssql用户和组,chmod 600确保只有该用户能读写,避免权限冲突。
2. 重建配置文件(排除文件损坏)
有时候文件看起来正常,但可能存在隐藏的格式错误或损坏。可以备份后重新生成:
# 先备份原配置文件 sudo cp /var/opt/mssql/mssql.conf /var/opt/mssql/mssql.conf.bak # 删除原文件 sudo rm /var/opt/mssql/mssql.conf # 重新运行配置向导 sudo /opt/mssql/bin/mssql-conf setup
注意:重新运行setup时需要再次设置SA密码、选择版本等信息,记得提前记录好之前的配置。
3. 递归修复MSSQL目录权限
除了单个配置文件,整个/var/opt/mssql目录的权限也可能影响服务访问。执行以下命令递归设置正确权限:
sudo chown -R mssql:mssql /var/opt/mssql sudo chmod -R 700 /var/opt/mssql
这条命令会把MSSQL的所有数据和配置目录都归给mssql用户,确保服务能正常访问所有相关文件。
4. 检查AppArmor限制(Ubuntu 16.04默认启用)
Ubuntu 16.04默认运行AppArmor安全模块,可能限制了MSSQL进程读取配置文件的能力。可以临时禁用MSSQL的AppArmor规则测试:
sudo aa-disable /etc/apparmor.d/usr.bin.sqlservr
如果禁用后配置成功,你可以选择永久调整AppArmor规则(需要编辑对应配置文件),或者根据安全需求决定是否保持禁用。
5. 排查磁盘与文件系统问题
Errno 2通常是“文件不存在”,但也可能是磁盘空间不足或文件系统损坏导致的虚假报错:
# 检查磁盘剩余空间 df -h # 检查文件系统完整性(需卸载对应分区,建议在业务空闲时操作) sudo fsck /dev/[你的分区设备名]
如果磁盘已满,清理冗余文件后再尝试配置;如果文件系统有错误,修复后重新启动服务器再测试。
内容的提问来源于stack exchange,提问作者Lars Goebels

