Archiv März 2018

Donnerstag, 22. März 2018

mysqldump: MySQL-Benutzer hat keine Rechte, eine Tabelle zu sperren

Als ich kürzlich ein selten gebrauchtes Backup-Script ausführen wollte, kam ich folgende Fehlermeldung zu Gesicht:

mysqldump: Got error: 1044: "Access denied for user 'username'@'10.1.2.3' to database 'app_app'" when using LOCK TABLES

Die Lösung für das Problem ist eigentlich ganz simpel. Entweder über die mysql-Kommandozeile:

GRANT LOCK TABLES ON app_app.* TO 'username'@'10.1.2.3';
FLUSH PRIVILEGES;

… oder über phpMyAdmin, wo man dem zutreffenden Benutzer unter mysql > Tables > db ein Häkchen bei Lock_tables_priv setzt …

… den Datensatz speichert und danach die Benutzerprivilegien neu lädt, indem man im Menupunkt „SQL“ den Befehl „FLUSH PRIVILEGES“ eingibt und das Kommando ausführt.

Tags: , , , , ,
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 22. März 2018

Wenn der UniFi Controller die MongoDB Log-Datei gigabyteweise füllt

Ich betreibe an drei physischen Standorten auf zu Linux-Servern umfunktionierten Lenovo-Laptops je einen UniFi-Controller, um die UniFi-Access Points an diesen drei Standorten zu provisionieren und zu überwachen.

Wer diese Software ebenfalls im Einsatz hat, sollte insbesondere nach Updates gelegentlich mal in das Verzeichnis /var/log/unifi reinschauen und überprüfen, dass sich die Log-Datei mongod.log nicht im Sekundentakt mit nachfolgend aufgeführten Fehlermeldungen füllt und so locker mehrer Gigabyte gross werden kann:

2018-03-12T20:49:21.010+0100 I CONTROL  [main] ***** SERVER RESTARTED *****
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten] MongoDB starting : pid=26817 port=27117 dbpath=/usr/lib/unifi/data/db 64-bit host=HOSTNAME
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten] db version v3.2.11
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten] git version: 009580ad490190ba33d1c6253ebd8d91808923e4
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.2l  25 May 2017
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten] allocator: tcmalloc
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten] modules: none
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten] build environment:
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten]     distarch: x86_64
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten]     target_arch: x86_64
2018-03-12T20:49:21.018+0100 I CONTROL  [initandlisten] options: { net: { bindIp: "127.0.0.1", http: { enabled: false }, port: 27117, unixDomainSocket: { pathPrefix: "/usr/lib/unifi/run" } }, storage: { dbPath: "/usr/lib/unifi/data/db" }, systemLog: { destination: "file", logAppend: true, path: "/usr/lib/unifi/logs/mongod.log" } }
2018-03-12T20:49:21.068+0100 E NETWORK  [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 127.0.0.1:27117
2018-03-12T20:49:21.069+0100 E NETWORK  [initandlisten]   addr already in use
2018-03-12T20:49:21.069+0100 E STORAGE  [initandlisten] Failed to set up sockets during startup.
2018-03-12T20:49:21.069+0100 I CONTROL  [initandlisten] dbexit:  rc: 48

Relevant ist die eine Zeile, die da lautet:

2018-03-12T20:49:21.068+0100 E NETWORK  [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 127.0.0.1:27117

Sie besagt, dass bereits ein Prozess auf Port 27117 lauscht. Und was macht das blöde Stück Software in einem solchen Fall? Es startet neu, immer wieder, ohne Ende. Und bei jedem Neustart (gefühlt alle Sekunde, wenn man sich mit tail -f dranhänkt) füllt sich das Log mit weiteren 1600+ Bytes und somit mit 5.6 Megabytes pro Stunde, 134.4 MB pro Tag und 940.8 MB pro Woche.

Als Anschauungsbeispiel das Log-Verzeichnis auf einem meiner Server:

/var/log/unifi]# ls -lh
total 1.2G
-rw------- 1 unifi root     0 Mar 18 00:08 mongod.log
-rw------- 1 unifi root   153 Jan 12 14:32 mongod.log.10.gz
-rw------- 1 unifi root   900 Jan  5 23:38 mongod.log.11.gz
-rw------- 1 unifi root   882 Dec 30 22:15 mongod.log.12.gz
-rw------- 1 unifi root   687 Dec 23 02:27 mongod.log.13.gz
-rw------- 1 unifi root   691 Dec 16 10:58 mongod.log.14.gz
-rw------- 1 unifi root  1.1G Dec  2 12:07 mongod.log.15.gz
-rw------- 1 unifi root  3.4M Mar 13 21:30 mongod.log.1.gz
-rw------- 1 unifi root   30M Mar 12 00:09 mongod.log.2.gz
-rw------- 1 unifi root   23M Mar  4 00:09 mongod.log.3.gz
-rw------- 1 unifi root   30M Feb 26 00:07 mongod.log.4.gz
-rw------- 1 unifi root   23M Feb 18 00:09 mongod.log.5.gz
-rw------- 1 unifi root   30M Feb 12 00:08 mongod.log.6.gz
-rw------- 1 unifi root  1.7M Feb  4 00:10 mongod.log.7.gz
-rw------- 1 unifi root   675 Jan 26 09:19 mongod.log.8.gz
-rw------- 1 unifi root   236 Jan 21 14:25 mongod.log.9.gz

Wie man auf einen Blick sieht, hat sich das Log in der Woche vom 25. November bis zum 2. Dezember auf diese Weise gefüllt und war selbst mit gzip gezippt noch satte 1.1GB gross. Im Vergleich zu anderen Wochen, wo ein paar wenige Bytes zusammenkommen.

Wer den UniFi-Controller auf einer SSD-Platte laufen hat, dem werden ob diesen Schreiboperationen die Tränen kommen.

Was ist die Lösung?

# killall mongod

Startet der UniFi-Controller die MongoDB das nächste Mal neu, kann sie sich an den Port binden.

In den Foren des Herstellers finden sich auf Anhieb eine einzige Meldungen zum Symptom, aber mit einem anderen Lösungsvorschlag, der mit meiner Situation nichts zu tun hatte:

Auf Ask Ubuntu findet sich eine generelle Problemmeldung zum Thema MongoDB: Mongod server not woking due to the following error. Von hier stammt schlussendlich der essentielle Hinweis, einfach den bereits laufenden mongodb-Prozess zu „killen“.

Tags: , , ,
Labels: Linux

2 Kommentare | neuen Kommentar verfassen

Donnerstag, 22. März 2018

Nicht über Apple gekauften AppleCare Protection Plan registrieren

Da mein iMac 27″ (Late 2015) diesen März ein Jahr alt wurde, habe ich mich entschieden, einen Apple Care Protection Plan anzuschaffen. Diesen kann man innerhalb eines Jahres nach Kaufdatum des Macs erstehen und die Garantie des Geräts auf drei Jahre verlängern.

Für meinen iMac handelt es sich um das Produkt mit der Produktenummer MF216D/A. Es wäre möglich, die Garantieverlängerung bequem online über Apple zu kaufen, doch dies hätte mit satten 249 CHF zu Buche geschlagen.

Kauft man die physische Box-Version über einen Detailhändler, kann man einiges an Geld sparen. Da dies mein erster Kauf eines AppleCare Produkts war, entschied mich für volles Risiko und orderte stattdessen den Artikel Apple AppleCare Protection iMac MD007D/A von Techniworld.ch — für 153.55 CHF. Eine Ersparnis von knapp 100 CHF. Und um es vorwegzunehmen: Ja, es handelt sich um das identische Produkt und Apple hat die so gekaufte Garantieverlängerung akzeptiert.

Mit der Seriennummer, die auf der Papierbroschüre aufgeklebt ist, identifiziert man gegenüber Apple die Gültigkeit des Plans. Diese Nummer muss gemäss Apple folgendermassen zusammen mit dem Gerät registriert werden:

AppleCare-Vertrag registrieren

  • Melden Sie sich bei „Mein Support“ mit Ihrer Apple-ID und Ihrem Passwort an.
  • Wählen Sie das Gerät aus, für das Sie einen AppleCare-Vertrag registrieren müssen.
  • Klicken Sie auf „Abdeckung hinzufügen“.
  • Klicken Sie auf „Jetzt registrieren“.
  • Geben Sie Ihre Vertragsnummer und Ihre E-Mail-Adresse ein. Akzeptieren Sie dann die Allgemeinen Geschäftsbedingungen von Apple.

Quelle: Ihre Apple-Geräte und AppleCare-Verträge bei „Mein Support“ ansehen

Soweit so gut — ich konnte mich tatsächlich problemlos auf „My Support“ einloggen, sah meinen iMac und darunter den blau hinterlegten Link, um einen AppleCare Protection Plan für das Gerät zu hinterlegen.

Das Problem kam erst beim Ausfüllen meiner Kontaktdaten zu Tage: Als Land waren die „United States of America“ hinterlegt, und ich konnte diese Auswahl nicht ändern (wieso Apple nicht einfach die bereits in der Apple ID hinterlegten Informationen verwendet, ist mir schleierhaft).

Nach etwas Pröbeln schaffte ich es dann schlussendlich, dass in diesem Formular die Schweiz als Land voreingestellt war und schweizerische Adressen eingegeben werden konnten. Wie man das macht?

  • Zuerst einmal verwendet man einen anderen Browser, der noch nicht in diese Apple Support-Seite eingeloggt ist. Am Besten löscht man alle Caches und Cookies, oder verwendet gleich den Incognito-Modus. Ich habe Firefox gewählt.
  • Anschliessend stellt man die Sprache des Browsers auf „Deutsch/Schweiz [de-ch]“ ein. In Firefox unter Mac erfolgt dies über das Menu Firefox > Einstellungen > Allgemein > Sprache
  • Schlussendlich verwendet man die (fast) identische URL, wie sie Apple im Hilfedokument angibt, fügt aber als GET-Parameter folgenden Zeichenkette an: ?selectedLocale=de_CH. Die URL lautet nun also komplett mysupport.apple.com/?selectedLocale=de_CH. Surft man die Support-Seite auf diesem Weg an, sollte sie auf Deutsch angezeigt werden

Danach bin ich dem normalen Weg gefolgt.

Falls es damit immer noch nicht klappt — d.h. als Herkunftsland sind immer noch die USA ausgewählt — empfehle ich noch einen letzten Versuch: mysupport.apple.com/agreements/enroll?selectedLocale=de_CH

A propos: Wenn ich heute mit Firefox die Support-Seite ansurfe, erscheint folgende Fehlermeldung:

Tags: , , ,
Labels: Apple

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 22. März 2018

Egal was, kauft einfach keine Tintenpisser

(fürs Briefe drucken)

Tags: , , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 21. März 2018

RMB

… das steht für die (mittlerweile aufgelöste) Techno-Band von Rolf Maier-Bode und Farid Gharadjedaghi, welche in den Neunzigern Hammersongs produzierten, welche vereinzelt auch die Charts stürmten (man stelle sich das heute vor, inmitten den Weichspülern Ed Sheeran und Taylor Swift …).

RMB gehört neben Chicane, Nicholas Bracegirdle, zu meinen Lieblingsmusikern und ist mit ein Grund, weshalb ich hier in unserer Wohnung immer noch einen Technics SL-1200MK2 Plattenspieler herumstehen habe (über einen Vorverstärker über Klinke an einem Sonos PLAY:5 angeschlossen). Insgesamt besitze ich zwei dutzend Original-Schallplatten und somit fast die ganze Diskographie der Jungs, und lasse es mir nicht nehmen, unregelmässig wieder in die ein oder andere Platte reinzuhören.

Da ich gerade mit Grippe zu Hause im Bett liege, mich langweile und deshalb meine Remember The Milk Todo-Liste durchgehe, habe ich heute einige YouTube-Videos über Rolf Maier-Bode geguckt, die ich jedem Nostalgiker und in den Neunzigern gross gewordenem Techno-Fan nur empfehlen kann.

Was mir so erst bewusst wurde: Rolf und Farid sind nicht im guten Auseinandergegangen und es ist Rolf verboten, unter dem Namen „RMB“ aufzutreten. Und Rolf war der Musiker hinter dem Duo, das Genie, und Farid wahrscheinlich wohl eher der Verkäufer, Sales-Man, der Mann für die Aussenwirkung und der gelegentliche Ideengeber.

Zweiteiliges Interview in der Sendung NRW Late Night (2016)

Viel zu kurz, aber optimal um sich wieder in die Zeit zurückzuverstzen

Längeres Interview wenige Wochen vor dem Kurzauftritt auf der 25. Mayday (2016)

Geht viel tiefer auf die Musik-Technik, aber auch die persönlichen Umstände von Rolf Maier-Bode ein

Kurzauftritt an der Mayday (2016)

Offizielles Video (nur 6 Minuten 12 Sekunden der Total 23 Minuten 19 Sekunden) — ACHTUNG: drehbares 360 Grad-Video!

Inoffizielles Video (ganzes Set, 23 Minuten 19 Sekunden)

Wer den Sound der Neunziger vermisst, dem sind die drei Solo-Alben von Rolf Maier Bode empfohlen, die man in iTunes erstehen kann, oder direkt über Rolfs offizielle Web-Site:

  • Foundation (2016)
  • Twenty Thirteen (2013)
  • Thirteen Nights (2010)
  • Thirteen Stories (2009)

Tags:
Labels: Geschichte, Leben

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 21. März 2018

YouTube und Vimeo Embed-Code auf meine Blog Artikel-Breite anpassen

YouTube

Seit YouTube die Möglichkeit nicht mehr offeriert, die gewünschte Breite oder Höhe von Videos im Embed-Code für Videos einzugeben, muss ich immer selber nachrechnen:

Der Embed-Code verwendet standardmässig 560 Pixel Breite und 315 Pixel Höhe.

Da die Artikel in meinem Blog nur 400 Pixel breit sind, muss ich den HTML-Code jedes Mal wie folgt anpassen: 400 Pixel Breite und 225 Pixel Höhe.

Vimeo

Bei Vimeo ist es ähnlich, die Dimensionen sind hier 640 Pixel Breite und 360 Pixel Höhe.

Für das Einfügen in meinen Blog muss ich die Dimensionen auf 400 Pixel Breite und 225 Pixel Höhe ändern.

Tags: , , ,
Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 11. März 2018

Ob die Post-Webmaster das reCAPTCHA-Upgrade hinkriegen?

Als ich Ende Februar einige versteigerte Artikel per Paketpost versendet habe und dafür über die Web-Site der Post die Tracking-Mitteilungen per E-Mail abonnieren wollte, grüssten mich anstelle der gewohnten Strassenschilder von reCAPTCHA, die vom menschlichen OCR entziffert werden müssen, einige Male folgende Fehlermeldung:

Ob die Post das Problem mittlerweile selber erkannt hat, weiss ich nicht. Zu aller Sicherheit halber habe ich aber soeben eine Twitter-Mitteilung an das Social Media-Team dort abgesetzt, damit sie es intern eskalieren können.

Mal schauen, ob die Meldung bis Monatsende den Weg durch die OEs des Unternehmens findet … sind wir gespannt!

Labels: Web

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 7. März 2018

Folien meines Lightning Talks zum Thema „RPi Dashboard“ (Backup)

Da letzte Woche die Web-Site der bernischen Lightning Talks offline gegangen ist, habe ich mich entschieden, den Foliensatz meines Vortrages vom 17. März 2014 auf meinem Blog zu Archivzwecken aufzuschalten:

2014-03-14-dashboard-lightning-talk.pdf

Tags: , , ,
Labels: IT

Keine Kommentare | neuen Kommentar verfassen