GNU/Linux >> Tutoriels Linux >  >> Linux

SQL Server sur Linux se bloque au démarrage initial, aucune erreur et aucun fichier ErrorLog nouveau/mis à jour

Cela s'est avéré être un cas de ne pas être prudent lorsque vous travaillez en tant que root .

J'avais recherché si SQLCLR sur Linux aurait accès au fichier app.Config comme il le fait dans Windows (malheureusement, ce n'est pas le cas :SQL Server 2017 sur Linux ignore le fichier de configuration de l'application s'il existe, ou parfois se verrouille s'il n'existe pas 't (SQLCLR) ) et dans certaines circonstances, SQL Server se verrouillerait complètement. Lorsque cela s'est produit, la seule façon de l'arrêter était de faire un kill -9 le sqlservr . Une des fois où j'ai redémarré le service, je l'ai fait en exécutant directement /opt/mssql/bin/sqlservr et pendant que je travaillais en tant que root (par conséquent, le processus lui-même appartenait à root ).

Il n'y a pas eu d'erreurs immédiates ou de comportement étrange résultant de l'exécution de sqlservr comme root , MAIS lorsque la machine virtuelle a redémarré et que SQL Server a tenté de démarrer correctement (c'est-à-dire en s'exécutant en tant que mssql utilisateur), c'est à ce moment-là qu'il s'est bloqué au tout début.

J'ai trouvé que c'était une conséquence directe de l'exécution de sqlservr comme root était que le /var/opt/mssql/log/errorlog le fichier (et quelques autres créés au démarrage de SQL Server) appartenaient à root (a du sens).

Et, une conséquence directe du fait que ces fichiers appartiennent à root est que lorsque le processus est démarré correctement (comme mssql ), puis le mssql l'utilisateur n'a pas la permission de renommer le fichier pour qu'il se termine par .1 (et tout ce qui doit se passer avec d'autres fichiers, tels que la trace par défaut, etc.). Cependant, plutôt que d'obtenir une erreur d'autorisation, il se bloque pour toujours.

Le correctif principal consiste simplement à exécuter ce qui suit en tant que root (Je n'ai pas essayé de l'exécuter en tant que mssql ). Pour les deux commandes suivantes, sudo n'est nécessaire que lorsqu'il n'agit pas actuellement en tant que root car il exécutera la commande qui le suit as root (ou un autre utilisateur si vous spécifiez -u username ), après avoir été invité à entrer le root mot de passe.

sudo chown -R  mssql:mssql /var/opt/mssql

Le correctif secondaire (pour s'assurer que cela ne se reproduise plus), est de démarrer SQL Server correctement;-) :

sudo systemctl start mssql-server

Linux
  1. Linux - Comment faire pour forcer la vérification du système de fichiers racine (et éventuellement un correctif) au démarrage ?

  2. Vérifiez les autorisations de fichiers Linux avec ls

  3. Trucs et astuces Linux .htaccess

  4. Commandes de gestion de fichiers Linux pour créer, copier, déplacer et supprimer des fichiers

  5. ZFS en tant que système de fichiers racine sur une nouvelle machine Linux ?

Copier des fichiers entre Linux et FreeDOS

Comment créer des liens matériels et logiciels (lien symbolique) sur les systèmes Linux

Comment monter et démonter des systèmes de fichiers sous Linux

4 façons de créer un nouveau fichier sous Linux

Comment monter et afficher le fichier ISO en tant qu'utilisateur root et régulier sous Linux

Linux / Dossier et dossier /racine