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

Jul*_*ian 11 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 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.
Run Code Online (Sandbox Code Playgroud)

当我尝试实际恢复数据库时也会发生同样的情况。知道出了什么问题吗?

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

$ ls -la var/opt/mssql/backup/MyDB.bak
-rw-r----- 1 501 dialout 3395584 Jan 16 02:12 var/opt/mssql/backup/MyDB.bak
Run Code Online (Sandbox Code Playgroud)

Jul*_*ian 16

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

docker exec -it -u root MicrosoftSQLServer "bash"
Run Code Online (Sandbox Code Playgroud)

然后更改用户(当我不以 root 身份运行 docker 容器时whoami返回)mssql

chown mssql /var/opt/mssql/backup/TestDB.bak
Run Code Online (Sandbox Code Playgroud)

然后就可以了。