Mit ‘MySQL’ Tagged einträge

MySQL Passwort reset

Dienstag, Juli 18th, 2017

immer wieder toll, dass sich im laufe eines Produkt zyklusses das zurücksetzen eines Passwort immer wieder ändere muss. Hier das Beispiel wie es unter Ubuntu 16.04 noch funktioniert:

Zunächst um welche Version handelt es sich:
mysql --version
mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper

Dann muss die Datenbank angehalten werden:
systemctl stop mysql

Unter Ubuntu existiert der /var/run/mysqld Ordner nicht der für das Starten des mysql Prozesses ohne Berechtigungen nötig ist:
mkdir /var/run/mysqld
chwon mysql: /var/run/mysqld
mysqld_safe --skip-grant-tables --skip-networking &

Dann kann man sich in die DB einloggen und das Passwort zurück setzen:
mysql -u root
use mysql;
UPDATE user SET authentication_string = PASSWORD('neues_passwort') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;

Zum Schluss muss der mysql Prozess wieder beendet werden und der ganz normale Dienst kann wieder gestartet werden:
kill `cat /var/run/mysqld/mysqld.pid`
systemctl start mysql

WordPress Admin mittels SQL Querry hinzufügen

Dienstag, September 1st, 2015

Für einen Kunden sollte ich einen weiteren WordPress Admin anlegen. Da ich nur über die Konsole zugriff auf die MySQL Datenbank habe, sah dies folgender maßen aus. Die Querrys können aber für PHPMyAdmin und co. äquivalent übernommen werden.

Zuerst muss der Admin User inklusive Passwort angelegt werden.

INSERT INTO 
	wp_users 
SET 
	user_login='Admin2', 
	user_pass=md5('password'), 
	user_nicename='admin2', 
	user_email='chr@istoph.de', 
	user_registered=now(), 
	user_status='0', 
	display_name='Admin2';

Nach der Eingabe muss die ID ausgelesen werden, da sie im nächsten schritt wieder verwendet wird.

SELECT * FROM wp_users WHERE user_login='Admin';

+----+------------+----------------------------------+---------------+----------------------------
| ID | user_login | user_pass                        | user_nicename | user_email    | user_url | 
+----+------------+----------------------------------+---------------+----------------------------
|  9 | Admin2     | 286755fad04869ca523320acce0dc6a4 | admin2        | chr@istoph.de |          | 
+----+------------+----------------------------------+---------------+----------------------------
1 row in set (0.00 sec)

Anschließend werden mit der ersetzen user_id zwei weitere Metadaten, die eigentlichen Berechtigungen, geätzt.

INSERT INTO 
	`wp_usermeta` 
	(`umeta_id`, `user_id`, `meta_key`, `meta_value`) 
VALUES 
	(NULL, '9', 'wp_capabilities', 'a:1:{s:13:"administrator";s:1:"1";}');

INSERT INTO 
	`wp_usermeta` 
	(`umeta_id`, `user_id`, `meta_key`, `meta_value`)
VALUES
	(NULL, '9', 'wp_user_level', '10');

Hiernach kann die Anmeldung mit Adminrechten vorgenommen werden. Danach wird WordPress die zuvor eingegebene md5 summe durch ein Solt Hash ersetzen.

migrate MySQL database in shell

Dienstag, März 25th, 2014

Heute habe ich die Datenbank meines Blogs umgezogen. Um die Datenbank schnell über die Konsole zu kopieren haben ich folgendes gemacht. Zuerst habe ich ein dump von der wp Tabelle gemacht und dies mittels gzip komprimiert. Auf dem neuen Server habe ich dann die DB wieder ausgepackt ins Dateisystem geschrieben.

ssh root@oldserver "mysqldump -hlocalhost -uwp -pPASSWORD wp | gzip" | zcat > wp.sql

Anschließend habe ich die wp.sql im mysql Client auf der Konsole importiert.
mysql -h localhost -u root -p
Enter password: ...

mysql> use wp
Database changed
mysql> source wp.sql
Query OK, 0 rows affected (0.00 sec)
...
mysql>
mysql> quit
Bye

MySQL Unix Socket weiterleiten

Samstag, November 13th, 2010

Wenn man bei einer LAMP System den Datenbankserver auf eine extra Maschine legen muss, hat man dank PHP etwas Stress mit dem unterschied zwischen localhost und 127.0.0.1 bzw ::1. Das liegt daran der UNIX Socket bei mein match auf localhost fest einkompiliert ist.

Mit socat kann man den Unix Socket zum Glück umleiten:
socat UNIX-LISTEN:/var/lib/mysql/mysql.sock,fork,user=mysql,group=mysql,mode=777 TCP:localhost:3306 2> /dev/null &

Mit rinetd kann man diese dann auf eine IP Weiterleiten.

Hidden Bridge mit MySQL Unterstützung

Freitag, März 6th, 2009

Als nächstes will ich Dokumentiren wie wir die Bridge mit MySQL Unterstützung aufgesetzt haben.

Dafür wird die Datenbank benötigt die ich schon für den DHCP Server verwendet habe.

Wichtig! Für mein Script wird das „Comand Line Interface“ für PHP und MySQL Unterstützung, die man einfach über apt-get install php5-cli php5-mysql installieren kann benötigt.

Dann das Eigentlich Script. Es wird nur ausgeführt wenn Änderungen an der Datenbank Tabelle vorgenommen wurden dies wird anhand der Uhrzeit ermittelt wann das Script zuletzt geschrieben wurde. Wenn änderungen statgefunden haben werden alle Filterregeln überschreiben und neu geladen. Wenn der Datenbank Server einmal nicht erreichbar sein sollte bleibt alles so wie es ist, somit kann sichergestellt werden das der laufende betrieb so gut wie nie unterbrochen wird.
/usr/local/sbin/brieg.php

#!/usr/bin/php5
= ". fileatime($conf) ."";
if(!file_exists($conf) || mysql_num_rows(mysql_query($sql,$link)) > 0)
{

	$data = "#!/bin/bash

$EBTABLES -F
";

	$sql = "SELECT mac,ip FROM mac WHERE status='activ' ORDER BY host";
	$q = mysql_query($sql, $link) or die(mysql_error($link));
	for(;$ds = mysql_fetch_array($q);)
	{
		if (preg_match("/[0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f][:][0-9a-f][0-9a-f]/i", $ds['mac']))
		{		
$data .= "
$EBTABLES -A FORWARD -p IPv4 -i $ETHBA -o $ETHFH -s ". $ds['mac'] ." --ip-src ". $ds['ip'] ." -j ACCEPT
$EBTABLES -A FORWARD -p IPv4 -i $ETHFH -o $ETHBA -d ". $ds['mac'] ." --ip-dst ". $ds['ip'] ." -j ACCEPT
$EBTABLES -A FORWARD -p ARP -i $ETHBA -o $ETHFH --arp-opcode 2 --arp-ip-src ". $ds['ip'] ." --arp-mac-src ". $ds['mac'] ." -j ACCEPT
$EBTABLES -A FORWARD -p ARP -i $ETHFH -o $ETHBA --arp-opcode 2 --arp-ip-dst ". $ds['ip'] ." --arp-mac-dst ". $ds['mac'] ." -j ACCEPT
";
        }
	}

$data .= "
$EBTABLES -A FORWARD -p ARP -i $ETHBA -o $ETHFH --arp-opcode ! 2 -j ACCEPT
$EBTABLES -A FORWARD -p ARP -i $ETHFH -o $ETHBA --arp-opcode ! 2 -j ACCEPT

$EBTABLES -A FORWARD -p IPv4 -i $ETHBA -o $ETHFH -j DROP
$EBTABLES -A FORWARD -p IPv4 -i $ETHFH -o $ETHBA -j DROP
";

$date .= "exit 0
";

	$fp = fopen($conf, 'w+');
	fwrite($fp, $data);
	fclose($fp);

	system("chmod u+x " . $conf);
	system($conf);
}
system("exit 0");
?>

Anschließend mit crontab -e einen Minütlichen Cronjob erstellen.
# m h dom mon dow command
* * * * * /usr/local/sbin/brieg.php