Eigene MySQL-Instanz für normalen User

Aus Salber.net

Wechseln zu: Navigation, Suche

Hier eine kurze Anleitung, um eine eigene MySQL-Server-Instanz als normalen User laufen zu lasen (getestet unter Ubuntu 8.10):

  1. AppArmor anpassen: Damit MySQL auf andere Verzeichnisse zugreifen darf, als standardmäßig vorgesehen, muss AppArmor angepasst werden. Ich habe einfach das usr.sbin.mysqld-Profil deaktiviert. Siehe https://help.ubuntu.com/community/AppArmor#Disable%20one%20profile. (Ist auf unserem Server bereits erledigt, steht hier nur der Vollständigkeit halber.)
  2. Eigenes MySQL-Config-File erzeugen:
    1. Kopiere /etc/mysql/my.cnf nach ~/.my.cnf
    2. Folgende Werte anpassen:
      • port (2 mal): Auf einen freien Port setzen, z.B. 3307. Für unseren OVH-Server nehmt bitte 2307 und addiert eure User-ID am Server (kann mit dem Befehl id abgefragt werden).
      • socket (3 mal): Irgendwo auf das eigene home-Verzeichnis setzen, z.B. /home/<username>/mysqld/mysqld.sock.
      • user: Der eigene Benutzername
      • pid-file: Irgendwo auf das eigene home-Verzeichnis setzen, z.B. /home/<username>/mysqld/mysqld.pid.
      • datadir: Irgendwo auf das eigene home-Verzeichnis setzen, z.B. /home/<username>/mysqld/data.
  3. Verzeichnisse erzeugen: mkdir -p /home/<username>/mysqld/data
  4. Datenbank anlegen: mysql_install_db --defaults-file=~/.my.cnf
  5. Datenbank-Server (im Hintergrund) starten: mysqld --defaults-file=~/.my.cnf &
  6. Datenbank-root-Passwort setzen: mysqladmin --defaults-file=~/.my.cnf -u root password 'new-password'

Das ist alles! Viel Spaß mit dem neuen DB-Server!

Noch ein paar nützliche Befehle:

  • Um den Server zu stoppen: mysqladmin --defaults-file=~/.my.cnf -u root -p shutdown
  • Um den Server zu starten (im Hintergrund): mysqld --defaults-file=~/.my.cnf &

Da der MySQL-Server (in der Standardeinstellung) nicht von außen erreichbar ist (nur über localhost), kann man ihn so konfigurieren, dass er auf allen Interfaces auf Verbindungen hört. Eine (bessere) Alternative ist das SSH Port-Forwarding: ssh -L3306:localhost:<mysql-port> user@server. <mysql-port> muss durch den Port am Server ersetzt werden.

Und noch ein paar Links:

Persönliche Werkzeuge