Ich habe bemerkt, dassmysqldläuft immer im Hintergrund. Es wird bei jedem Systemstart gestartet und selbst nachdem ich es beendet habe, wird es neu gestartet. Ich habe alles, was mit MySQL zu tun hat, entfernt mit:
sudo apt-get remove --purge mysql*
sudo apt-get autoremove
sudo apt-get autoclean
Es wird jedoch immer noch in angezeigt ps -aux
. Was bedeutet das? Und was bedeutet Benutzer 27 in der Ausgabe von ps -aux? Ich kann mich nicht erinnern, einen Benutzer 27 erstellt zu haben.
Erläuterung: Tatsächlich lag es an einem im Hintergrund laufenden SQL-Docker-Container
Antwort1
Es hört sich an, als ob Sie einen Docker-Container ausführen, der mysqld enthält.
Antwort2
Ich habe festgestellt, dass mysqld auf meinem System läuft und über 3 GB RAM verbraucht.
Ich begann mit der Untersuchung wie folgt:
sudo service --status-all
Dabei wurde MySQL als eines der ausgeführten Elemente aufgeführt (was ich auch im Systemmonitor gesehen habe).
Ich habe Docker nicht auf meinem System installiert.
Ich habe mir dann das Serviceskript angeschaut:
$ cat /etc/init.d/mysql
Hier ist eine unvollständige Auflistung für dieses Skript:
#!/bin/bash
#
### BEGIN INIT INFO
# Provides: mysql
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: $network $time
# Should-Stop: $network $time
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop the mysql database server daemon
# Description: Controls the main MySQL database server daemon "mysqld"
# and its wrapper script "mysqld_safe".
### END INIT INFO
#
set -e
set -u
${DEBIAN_SCRIPT_DEBUG:+ set -v -x}
test -x /usr/bin/mysqld_safe || exit 0
. /lib/lsb/init-functions
SELF=$(cd $(dirname $0); pwd -P)/$(basename $0)
CONF=/etc/mysql/my.cnf
MYADMIN="/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf"
# priority can be overriden and "-s" adds output to stderr
ERR_LOGGER="logger -p daemon.err -t /etc/init.d/mysql -i"
# Safeguard (relative paths, core dumps..)
cd /
umask 077
# mysqladmin likes to read /root/.my.cnf. This is usually not what I want
# as many admins e.g. only store a password without a username there and
# so break my scripts.
export HOME=/etc/mysql/
## Fetch a particular option from mysql's invocation.
#
# Usage: void mysqld_get_param option
mysqld_get_param() {
/usr/sbin/mysqld --print-defaults \
| tr " " "\n" \
| grep -- "--$1" \
| tail -n 1 \
| cut -d= -f2
}
## Do some sanity checks before even trying to start mysqld.
sanity_checks() {
# check for config file
if [ ! -r /etc/mysql/my.cnf ]; then
log_warning_msg "$0: WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz"
echo "WARNING: /etc/mysql/my.cnf cannot be read. See README.Debian.gz" | $ERR_LOGGER
fi
Aber woher kommt das? Hat irgendwas, das ich installiert habe, MySQL zu meinem System hinzugefügt? Soweit ich mich erinnere, ist das nicht passiert, und warum startet es, wenn ich meinen Rechner starte?
Ich habe in der Snaps- und Ubuntu-Software und an verschiedenen anderen Stellen nachgeforscht und es scheint, dass ich Mysql nicht selbst installiert habe.
Vielleicht eine Installation von Java EE oder so etwas? Das ist es wahrscheinlich.
Ich habe Folgendes ausgeführt:
sudo systemctl --all list-unit-files --type=service
Für MySQL sehe ich Folgendes aufgelistet:
UNIT_FILE STATE VENDOR PRESET
mysql.service enabled enabled
Dann musste ich den Dienst beim Start deaktivieren, also habe ich den folgenden Befehl ausgeführt:
sudo systemctl disable mysql.service
Ich habe die Prüfung erneut ausgeführt und gesehen, dass es tatsächlich deaktiviert war:
UNIT_FILE STATE VENDOR PRESET
mysql.service disabled enabled