Sql server 无法打开备份设备'/var/opt/mssql/backup/MyDB.bak';。操作系统错误5(访问被拒绝。)

Sql server 无法打开备份设备'/var/opt/mssql/backup/MyDB.bak';。操作系统错误5(访问被拒绝。),sql-server,docker,Sql Server,Docker,我发现很多情况下,人们试图从docker容器外部打开文件。但我的显然在里面 我得到的全部信息是: $ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "mypw" -Q "RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/MyDB.bak'" Msg 3201, Level 16, State 2, Server 1c7bf85afdaf, Line 1 Cannot open b

我发现很多情况下,人们试图从docker容器外部打开文件。但我的显然在里面

我得到的全部信息是:

$ /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "mypw" -Q 
"RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/MyDB.bak'"
Msg 3201, Level 16, State 2, Server 1c7bf85afdaf, Line 1
Cannot open backup device '/var/opt/mssql/backup/MyDB.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Server 1c7bf85afdaf, Line 1
RESTORE FILELIST is terminating abnormally.
当我尝试实际还原数据库时也会发生同样的情况。知道出了什么问题吗

我觉得可能是一些权限问题,需要更改文件的权限

$ ls -la var/opt/mssql/backup/MyDB.bak
-rw-r----- 1 501 dialout 3395584 Jan 16 02:12 var/opt/mssql/backup/MyDB.bak

解决方案是更改文件的权限。 我需要做:

docker exec -it -u root MicrosoftSQLServer "bash"
然后更改用户(
whoami
在我以非root用户身份运行docker容器时返回
mssql

然后它就起作用了

chown mssql /var/opt/mssql/backup/TestDB.bak