업데이트 후 Debian의 mssql-server가 손상되었나요?

업데이트 후 Debian의 mssql-server가 손상되었나요?

얼마 전 Debian VPS에 mssql-server를 설치했는데 제대로 작동했습니다. 이제 mssql-server가 실행되고 있지 않으며 무엇이 변경되었는지 모르겠습니다.

내가 들어가면 /opt/mssql/bin/sqlserver얻는다

2019-07-07 18:13:19.79 Logon       Error: 18456, Severity: 14, State: 7.
2019-07-07 18:13:19.79 Logon       Login failed for user 'sa'. Reason: An error occurred while evaluating the password. [CLIENT: 127.0.0.1]

내가 서비스를 시작하면 sudo systemctl start mssql-server내가 얻는 것은

jul 07 18:27:23 vps495056 systemd[1]: Started Microsoft SQL Server Database Engine.
-- Subject: Unit mssql-server.service has finished start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
-- 
-- Unit mssql-server.service has finished starting up.
-- 
-- The start-up result is done.
jul 07 18:27:23 vps495056 sqlservr[28229]: /opt/mssql/bin/sqlservr Error: Directory [/var/opt/system/] could not be created.  Errno [13]
jul 07 18:27:23 vps495056 systemd[1]: mssql-server.service: Main process exited, code=exited, status=1/FAILURE

var/opt/system디렉터리가 없기 때문에 만들었습니다 .

drwxr-sr-x  2 mssql    mssql     4096 jul  5 18:46 system

mssql 구성 파일

# cat /var/opt/mssql/mssql.conf 
[EULA]
accepteula = Y

[language]
lcid = 1033

mssql-server를 다시 설치해 보았으나 성공하지 못했습니다. 그 후에도 같은 오류가 발생합니다.

답변1

1년 전, mssql은 루트 이미지에서 루트가 아닌 이미지로 변환되었습니다. 바인딩된 볼륨이 있고 Linux 호스트에서 실행 중인 docker sql-server 컨테이너에 권한 문제가 발생합니다(=> 바인딩된 볼륨에 쓸 수 있는 권한 없음).

이 문제에 대한 해결책은 거의 없습니다.

1. 루트로 docker를 실행합니다.

예를 들어. 쓰다:

version: '3.6'
services:
  mssql:
    image: mcr.microsoft.com/mssql/server:2019-latest
    user: root
    ports:
      - 1433:1433
    environment:
      - ACCEPT_EULA=Y
      - SA_PASSWORD=BLAH
    volumes:
      - ./data:/var/opt/mssql/data

원천:https://github.com/microsoft/mssql-docker/issues/13#issuecomment-641904197

2. 올바른 디렉터리 소유자 설정(mssql)

  1. Docker 이미지에서 mssql 사용자 ID를 확인하면 다음이 sudo docker run -it mcr.microsoft.com/mssql/server id mssql 제공됩니다.uid=10001(mssql) gid=0(root) groups=0(root)
  2. 폴더 소유자 변경 sudo chown 10001 VOLUME_DIRECTORY

스페인어 소스:https://www.eiximenis.dev/posts/2020-06-26-sql-server-docker-no-se-ejecuta-en-root/

3. 전체 액세스(권장하지 않음)

호스트의 데이터베이스 파일에 대한 전체 액세스 권한을 부여합니다. sudo chmod 777 -R VOLUME_DIRECTORY

관련 정보