Reset the MySQL root password on Ubuntu Linux

September 26th, 2011

Kürzlich hatte ich das Problem, dass ich das Passwort für den root Benutzer meines MySQL-Servers vergessen habe. Da ich aber die Daten nicht verlieren wollte war eine Neuinstallation keine Option.

Hier eine kurze Step-by-Step Anleitung um das root Passwort des MySQL-Servers zurück zu setzen.

  1. 1. MySQL Server stoppen
    sudo /etc/init.d/mysql stop
  2. 2. MySQL Server ohne Rechteprüfung starten
    sudo mysqld --skip-grant-tables &
  3. 3.Als root einloggen und die DB mysql wählen
    mysql -u root mysql
  4. 4. Passwort für root zurücksetzen
    UPDATE user SET Password=PASSWORD('YOURNEWPASSWORD') WHERE User='root'; FLUSH PRIVILEGES; exit;
  5. 5. Server neu starten
    sudo /etc/init.d/mysql restart

Dies ist vielleicht nicht die sicherste Methode, jedoch für meine Entwicklerkiste reichts.

SSH Public Key Authentication

August 8th, 2011

Hier eine kleine Anleitung wie man unter Mac OS X 10.7 (aka Lion) die SSH Public Key Authentication einrichtet. Dazu brauchen wir das Terminal (zu finden unter Applications/Utilities/Terminal). Wenn das Terminal offen ist, muss folgendes eingetippt werden:

ssh-keygen

Mit Enter bestätigen, danach wird gefragt wo die Keys abgespeichert werden sollen. Der vorgeschlagene Pfad ist ok und kann mit Enter bestätigt werden.
Die nächste Eingabe die verlangt wird ist ein Passwort. Mit welchem Passwort soll der Key verschlüsselt werden? Es kann auch kein Passwort eingegeben und einfach mit Enter bestätigt werden. Dann wird der Key nicht verschlüsselt gespeichert.

Sobald die Keys erstellt sind, muss der Public Key dem Server bekannt gemacht werden. Dazu folgendes auf dem Client im Terminal eingeben:

cat ./ssh/id_rsa.pub

Der Output sieht dann etwa so aus:

MacBook-Air:~ silas$ cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABEQAABAQDGSZ3cKJwOhWAojD9j+G1/IKgZFc2oCB5umXztBo+XTdabFhD+0dFo6iVL2MilHIYPG42mOFAM9ZztoOW6yMQlpnWzcMS1SuAfaiEfd3l/rTbWtz9kK1Wq0XGS8qzhxBV2964aUFz3X5c2pmjC7gBoac981DfdjkUJaBeLSF6CdM6w9d5hIy2tO2o8juhJgoK2RZuKjghyGna0XnRIeTZufBhayZBFJ+ZKke2Whc+tDSE57LpxvyT8xAGYo9qFX/QCoexY3C7VDPuk7AJHkhZGHLJhsr3aXYQHx48q9nJtznilYbPQafXE47pS5zr3wxkxDg0GZDhQ21rovtk3U6xP silas@MacBook-Air.local
Silass-MacBook-Air:~ silasknobel$

Davon die mittlere Zeile kopieren. (Darauf achten, dass die ganze Zeile kopiert wird)

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABEQAABAQDGSZ3cKJwOhWAojD9j+G1/IKgZFc2oCB5umXztBo+XTdabFhD+0dFo6iVL2MilHIYPG42mOFAM9ZztoOW6yMQlpnWzcMS1SuAfaiEfd3l/rTbWtz9kK1Wq0XGS8qzhxBV2964aUFz3X5c2pmjC7gBoac981DfdjkUJaBeLSF6CdM6w9d5hIy2tO2o8juhJgoK2RZuKjghyGna0XnRIeTZufBhayZBFJ+ZKke2Whc+tDSE57LpxvyT8xAGYo9qFX/QCoexY3C7VDPuk7AJHkhZGHLJhsr3aXYQHx48q9nJtznilYbPQafXE47pS5zr3wxkxDg0GZDhQ21rovtk3U6xP silas@MacBook-Air.local

Nun wenn dieser Public Key im Zwischenspeicher ist muss dieser noch auf dem Server in die Datei authorized_keys eingetragen werden. Dazu via SSH mit dem Server verbinden.

ssh meinBenutzer@mein.server.tld

und das Passwort eingeben.

Ist man nun auf dem folgendes Eintippen:

echo "[HIER DEN KOPIERTEN PUBLIC KEY EINFÜGEN]" >> .ssh/authorized_keys

und mit Enter bestätigen.

Nun ist die SSH Public Key Authentication eingerichtet und das SSH Passwort muss vom entsprechendem Client nicht mehr eingegeben werden.

Viel Spass

iPhone gesteuertes R/C Auto (Video)

February 12th, 2011

Ich habe mein altes iPhone rausgekramt, damit ich von meinem Projekt ein Video machen kann. Seht selbst!

Schönes Wochenende!

iPhone gesteuertes R/C Auto (Teil 2)

February 6th, 2011

Ich habe nun mein Projekt “iPhone controlled R/C Car” abgeschlossen. Nach ein paar Stunden basteln und programmieren kann ich nun das Projekt auch dem grossen Publikum zeigen.

Die Fernbedienung von meinem Auto mit den Steuerkabeln an den entsprechenden Stellen angelötet.

Steckverbindungen auf dem Breadboard.

Da das ganze auf den Bildern nicht wirklich überschaubar ist, habe ich hier ein ganz einfaches Schema gezeichnet.

Bitte an dieser Stelle nicht erschrecken. Ich habe auf meiner Schaltung noch ein paar LED’s dazwischen gehängt, damit ich sehe was gerade alles angesteuert wird. Die Artikelnummer von Conrad für die Transistoren lautet 151034 – 62. So gehts leichter zum bestellen.

Nun aber zum Highlight des Ganzen! Die iPhone App um das Auto zu steuern.

Die Kommunikation zwischen iPhone und Arduino µC funktioniert über Ethernet. Damit ich nicht ans iPhone als Fernbedienung gebunden bin, habe ich einen Middlelayer eingebunden. Dieser ist mittels PHP Programmiert. Das PHP Script öffnet eine Socketverbindung zum Arduino und sendet ein String welcher das Programm auf dem µC auswertet und den entsprechenden Ausgang schaltet.

Die iPhone App ruft bei einem Touch-Event einfach das PHP-Script mit dem entsprechenden Parameter auf. Das PHP-Script leitet diesen Parameter and den µC weiter. So einfach funktioniert das.

Hier das PHP-Script:

<?php

function sendCommand($command) {
  $c = fsockopen('1.1.1.2', 80, $errno, $errstr, 1);

  if(!$c) {
    echo $errstr.' ('.$errno.")<br />\n";
  }
  else {
    fwrite($c, $command);
    echo 'sent data: '.$data;
    fclose($c);
  }
}

sendCommand($_GET['q']);
?>

Und hier das Programm auf dem µC:

#include <SPI.h>
#include <Ethernet.h>

#define Bwd 8
#define Fwd 7
#define Left 6
#define Right 5

String command; //W=119;A=97;S=115;D=100
int stateBwd = false;
int stateFwd = false;
int stateLeft = false;
int stateRight = false;

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 1,1,1,2 };

Server server(80);

void setup() {
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.begin(9600);
  pinMode(Bwd, OUTPUT);
  pinMode(Fwd, OUTPUT);
  pinMode(Left, OUTPUT);
  pinMode(Right, OUTPUT);
}

void loop() {
   Client client = server.available();
   
   if(client) {
     command = "";
     while(client.connected()) {
       if(client.available()) {
         char c = client.read();
         command += c;
       }
       //client.stop();
     }
    if(command=="F") { //Forward
      if(stateFwd) {
        stateFwd = false;
        digitalWrite(Fwd, LOW);
      }
      else {
        stateFwd = true;
        stateBwd = false;
        digitalWrite(Bwd, LOW);
        digitalWrite(Fwd, HIGH);
      }
    } //command 119
   
    if(command=="B") { //Back
      if(stateBwd) {
        stateBwd = false;
        digitalWrite(Bwd, LOW);
      }
      else {
        stateFwd = false;
        stateBwd = true;
        digitalWrite(Fwd, LOW);
        digitalWrite(Bwd, HIGH);
      }
    }
   
    if(command == "L") { //Left
      if(stateLeft) {
        stateLeft = false;
        digitalWrite(Left,LOW);
      }
      else {
        stateRight = false;
        digitalWrite(Right, LOW);
        stateLeft = true;
        digitalWrite(Left, HIGH);
      }
    }
   
    if(command == "R") { //Right
      if(stateRight) {
        stateRight = false;
        digitalWrite(Right, LOW);
      }
      else {
        stateLeft = false;
        digitalWrite(Left, LOW);
        stateRight = true;
        digitalWrite(Right, HIGH);
      }
    }
     
     delay(1);
     client.stop();
   }
}

Für die Xcode-User habe ich hier noch mein kleines Xcode Projekt zum Download. Hier muss in der Source nur noch die URL des obigen PHP-Scripts angepasst werden.
Download rccar Xcode Project

Mangels einer zweiten Kamera (die einzige ist im iPhone) kann ich leider noch kein Video machen. Ich schau mal ob ich meine alte Digicam noch finde.
Bis dahin viel Spass beim Basteln!

iPhone gesteuertes R/C Auto (Teil 1)

February 6th, 2011

Ich habe wiedereinmal gebastelt. Und zwar habe ich noch ein altes, ferngesteuertes Auto herumliegen gehabt. Nun hab ich mich gefragt ob sich dieses auch mit meinem µController steuern lässt. Und ja es funktioniert! Im Internet habe ich zusätzlich noch eine Anleitung gefunden, wie ich das Auto schlussendlich über das iPhone steuern kann.

Nun ich habe jetzt einmal einen kleinen Versuchsaufbau gemacht um zu sehen wie ich das ganze angehen kann. Das Ergebnis möchte ich an dieser Stelle nicht vorenthalten.

Wie bin ich vorgegangen?

  • Fernsteuerung auseinander bauen
  • Kabel an die Taster anlöten
  • Kabel mit Transistor verbinden
  • Transistor über den µController steuern

Schema, Teilenummern und eine bebilderte Anleitung gibts im nächsten Post!
Bis dahin gute Nacht!