wiki:datenbanken
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
| Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
| wiki:datenbanken [2017/12/11 10:07] – [Benutzer und Passwörter] pulsar | wiki:datenbanken [2023/11/03 14:19] (aktuell) – [Benutzer und Passwörter] techguru | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Datenbanken ====== | ||
| + | |||
| + | Hier habe ich Informationen über die Standard Datenbanken unter Linux zusammen getragen. Hiermit meine ich die Datenbanken Software welche sich out of the Box über die Paketverwaltung installieren lässt. | ||
| + | |||
| + | |||
| + | ===== MariaDB / MySQL ===== | ||
| + | |||
| + | MySQL speichert seine Daten im Verzeichnis ''/ | ||
| + | '' | ||
| + | |||
| + | Unter Suse sollte man folgendes Kommando ausführen um die DB in einer produktiven Umgebung abzusichern: | ||
| + | |||
| + | mysql_secure_installation | ||
| + | |||
| + | |||
| + | Einige Kommandos unter Debian / SUSE: | ||
| + | |||
| + | < | ||
| + | dpkg-reconfigure mysql-server-5.0 =PW festlegen | ||
| + | mysqladmin password | ||
| + | mysql_setpermission =PW zurücksetzen | ||
| + | mysql -uroot -p =anmelden wenn PW gesetzt | ||
| + | mysql_upgrade -p =Optimieren und Reparieren (SUSE) | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== Benutzer und Passwörter ==== | ||
| + | |||
| + | Mit der folgenden Anweisung wird der Datenbank-Benutzer wordpressuser angelegt. | ||
| + | Er darf sich mit dem Host localhost verbinden und soll das Kennwort geheim verwenden. | ||
| + | Standardmäßig verfügt der Benutzer nach der Einrichtung über keine Datenbank-Berechtigungen. | ||
| + | |||
| + | create user ' | ||
| + | |||
| + | Nun sollen ihm alle Rechte für die Datenbank wordpressdb gewährt werden, was mit folgender Anweisung geschieht: | ||
| + | |||
| + | grant all on wordpressdb.* to ' | ||
| + | |||
| + | Jetzt ist der Benutzer zur Nutzung der Datenbank wordpressdb berechtigt und kann z. B. | ||
| + | neue Tabellen anlegen und diese mit Daten füllen. Außerdem darf er seine Datenbank löschen. | ||
| + | |||
| + | Den neuen Benutzer könnte man alternativ auch mit folgender Anweisung in einem Schritt anlegen | ||
| + | und ihm die Rechte für seine Datenbank gewähren: | ||
| + | |||
| + | | ||
| + | grant all on wordpressdb.* to ' | ||
| + | |||
| + | |||
| + | root pw ändern: | ||
| + | |||
| + | mysql -u root | ||
| + | |||
| + | < | ||
| + | | ||
| + | | ||
| + | FLUSH PRIVILEGES; | ||
| + | </ | ||
| + | |||
| + | |||
| + | === MySQL-Benutzer löschen === | ||
| + | |||
| + | Den gerade angelegten Benutzer kannst du mit folgender Anweisung löschen: | ||
| + | |||
| + | drop user ' | ||
| + | |||
| + | |||
| + | Das Verwalten von Benutzern und Rechten ist mit folgenden Befehlen möglich: | ||
| + | |||
| + | GRANT ALL PRIVILEGES ON *.* TO NeuerUser IDENTIFIED BY ' | ||
| + | |||
| + | Dies legt einen neuen Benutzer an. In unserem Beispiel werden dem Benutzer NeuerUser dabei alle Rechte erteilt. | ||
| + | Analog wird ein Benutzer " | ||
| + | Der GRANT-Befehl kann auch nachträglich zum Zuweisen von Rechten benutzt werden: | ||
| + | |||
| + | GRANT Recht ON Was TO UserName; | ||
| + | |||
| + | Vergibt ein Recht. Dabei kann für Recht eingesetzt werden: | ||
| + | |||
| + | ALL PRIVILEGES, FILE, RELOAD, ALTER, INDEX, SELECT, CREATE, | ||
| + | INSERT, SHUTDOWN, DELETE, PROCESS, UPDATE, DROP, REFERENCES, USAGE | ||
| + | |||
| + | Für Was kann ein Tabellenname oder Datenbankname.* (dann gilt das Recht für alle Tabellen dieser Datenbank) | ||
| + | eingesetzt werden. | ||
| + | |||
| + | Der Zusatz '' | ||
| + | an andere weitergeben darf. | ||
| + | Das Gegenteil von '' | ||
| + | |||
| + | REVOKE Recht ON Was FROM UserName; | ||
| + | |||
| + | Ansonsten gilt für '' | ||
| + | In mySQL kann man einem User zunächst alle Rechte entziehen: | ||
| + | |||
| + | REVOKE ALL PRIVILEGES ON * FROM UserName; | ||
| + | |||
| + | um ihm dann gezielt wieder bestimmte Rechte zu erteilen. Um sich anzeigen zu lassen, | ||
| + | welche Rechte jemand hat, gibt man den Befehl ein: | ||
| + | |||
| + | SHOW GRANTS FOR Benutzer; | ||
| + | |||
| + | Nach Änderungen an den Benutzern und Rechten wird der folgende Befehl ausgeführt: | ||
| + | |||
| + | flush privilegs; | ||
| + | |||
| + | |||
| + | === Welche MySQL Benutzer gibt es? === | ||
| + | |||
| + | Dies steht in der mysql DB in der Tabelle '' | ||
| + | |||
| + | SELECT user, host, IF(LENGTH(password)> | ||
| + | ===== DB Backup ===== | ||
| + | |||
| + | Log dich als root in MYSQL ein und lass dir die Tabellen anzeigen. | ||
| + | |||
| + | SHOW DATABASES; | ||
| + | SHOW TABLES; | ||
| + | |||
| + | Ein Dump über die alle Datenbanken: | ||
| + | |||
| + | mysqldump -uroot -p< | ||
| + | |||
| + | |||
| + | ==== automatisierte Backups ==== | ||
| + | |||
| + | Bei automatisierten Backups per Shell Skript möchte man kein Passwort eingeben. Dies erreicht man indem man das Passwort mit dem Schalter '' | ||
| + | Manchmal kommt es vor das ein MySQLdump den folgenden Fehler zurück gibt: | ||
| + | |||
| + | mysqldump: Got error: 1045: " | ||
| + | |||
| + | Hier hilft es den Schalter --single-transaction mit anzugeben damit das Backup-Skript den MySQL Dump zieht. | ||
| + | |||
| + | mysqldump -uicingaweb -pgeheim --databases icinga2 --single-transaction | ||
| + | |||
| + | |||
| + | |||
| + | === Export: === | ||
| + | |||
| + | Dazu nutzen wir '' | ||
| + | |||
| + | mysqldump -uUSER -pPASSWD --allow-keywords --opt DB > DB.sql | ||
| + | |||
| + | Verfeinerung: | ||
| + | |||
| + | mysqldump -uUSER -pPASSWD --allow-keywords --opt DB | gzip > DB.sql.gz | ||
| + | |||
| + | |||
| + | |||
| + | == bei anschließenden Fehlern beim exportieren == | ||
| + | |||
| + | Find your debian-sys-maint password in / | ||
| + | |||
| + | Einloggen in mysql und dann nutze: | ||
| + | |||
| + | < | ||
| + | GRANT ALL PRIVILEGES ON *.* TO ' | ||
| + | Replace < | ||
| + | SHOW GRANTS for ' | ||
| + | </ | ||
| + | |||
| + | bei weiteren Fehlern: | ||
| + | |||
| + | dpkg-reconfigure mysql-server-5.0 | ||
| + | |||
| + | |||
| + | === Import: === | ||
| + | |||
| + | Die exportierte Datei liegt nun auf dem neuen Server / Webspace. | ||
| + | Dazu nutzen wir mysql: | ||
| + | |||
| + | mysql -uUSER -pPASSWD DB < DB.sql | ||
| + | |||
| + | Verfeinerung: | ||
| + | |||
| + | gzip -dc DB.sql.gz | mysql -uUSER -pPASSWD DB | ||
| + | |||
| + | Falls das Backup / dump nicht einzuspielen geht, sollte die betreffende DATABASE nochmal mit '' | ||
| + | entfernt werden. Dann mit '' | ||
| + | |||
| + | kompletten dump einspielen mit mehreren DB's: | ||
| + | |||
| + | mysql -uroot < allDBs01.sql | ||
| + | |||
| + | Auf mysql promt(shell) | ||
| + | |||
| + | show DATABASES; | ||
| + | |||
| + | Wenn tilab nicht vorhanden, dann erstelle sie: | ||
| + | |||
| + | create database tilab; | ||
| + | |||
| + | erst dann kann man die neue DB einspielen: | ||
| + | |||
| + | mysql -uroot tilab < tilab.sql | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ==== Datenbanken und Tabellen erstellen ==== | ||
| + | |||
| + | Um Tabellen in MySQL zu erstellen wird der SQL-Befehl CREATE TABLE verwendet. | ||
| + | Dabei wird zuerst ein Tabellenname angegeben. Hierbei darf der Tabellennamen nicht aus einem | ||
| + | MySQL Schlüsselwort | ||
| + | die untereinander mit einem Kommata getrennt sind. Jede Spaltenangabe besteht dabei aus den Namen | ||
| + | und den Typ der Spalte, kann aber auch zusätzliche Optionen wie NOT NULL, PRIMARY KEY | ||
| + | und AUTO_INCREMENT besitzen. Wie jeder SQL-Befehl muss auch ein CREATE TABLE mit einem Semikolon | ||
| + | abgeschlossen werden. Ein Beispielquery für das erstellen einer Tabelle könnte wie folgt aussehen. | ||
| + | |||
| + | CREATE TABLE News ( | ||
| + | ID INT AUTO_INCREMENT PRIMARY KEY, | ||
| + | Autor VARCHAR(30) NOT NULL, | ||
| + | Titel VARCHAR(50) NOT NULL, | ||
| + | Inhalt TEXT NOT NULL, | ||
| + | Datum DATETIME NOT NULL | ||
| + | ); | ||
| + | |||
| + | |||
| + | === Anzeigen === | ||
| + | |||
| + | Tabellen von DB tilab: | ||
| + | |||
| + | use tilab; | ||
| + | show tables; | ||
| + | |||
| + | den Inhalt der Tabellen kann man sich nun mit: | ||
| + | |||
| + | select * from personal; | ||
| + | |||
| + | anzeigen lassen. Hier wird mit * der komplette Inhalt der Tabelle personal angezeigt. | ||
| + | |||
| + | Genauere Auswahl aus einer Tabelle | ||
| + | |||
| + | select 3 from personal where name = " | ||
| + | |||
| + | |||
| + | === Entfernen von Einträgen === | ||
| + | |||
| + | eine Datenbank kann mit '' | ||
| + | |||
| + | DROP DATABASE tilabalr; | ||
| + | CREATE DATABASE tilab; | ||
| + | |||
| + | eine Tabelle kann genauso gelöscht werden, vorher Datenbank auswählen: | ||
| + | |||
| + | use tilab; | ||
| + | DROP TABLE mlist_0; | ||
| + | CREATE TABLE mlist_0; | ||
| + | |||
| + | ==== MySQL DB optimieren ===== | ||
| + | |||
| + | < | ||
| + | mysqlcheck --auto-repair icinga -uroot -p | ||
| + | mysqlcheck --auto-repair --all-databases -uroot -p | ||
| + | mysqlcheck [options] db_name [tables] | ||
| + | mysqlcheck [options] --databases db_name1 [db_name2 db_name3...] | ||
| + | mysqlcheck [options] --all-databases | ||
| + | </ | ||
| + | |||
| + | Wenn Sie auf db_name folgend keine Tabellen aufführen oder die Optionen '' | ||
| + | |||
| + | |||
| + | ===== Uhrzeit und Timezone ===== | ||
| + | |||
| + | Die Zeitzone innerhalt der DB abfragen, unten wird gezeigt das die Systemzeit verwendet wird, es sollte also gleich der Zeit sein die '' | ||
| + | < | ||
| + | MariaDB [(none)]> | ||
| + | +--------------------+---------------------+ | ||
| + | | @@global.time_zone | @@session.time_zone | | ||
| + | +--------------------+---------------------+ | ||
| + | | SYSTEM | ||
| + | +--------------------+---------------------+ | ||
| + | 1 row in set (0.00 sec) | ||
| + | </ | ||
| + | |||
| + | Das aktuelle Datum und Uhrzeit auf der MariaDB Shell abfragen: | ||
| + | |||
| + | < | ||
| + | MariaDB [(none)]> | ||
| + | +---------------------+ | ||
| + | | now() | | ||
| + | +---------------------+ | ||
| + | | 2019-10-29 14:30:41 | | ||
| + | +---------------------+ | ||
| + | 1 row in set (0.00 sec) | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== PostgreSQL ===== | ||
| + | |||
| + | Pfad zur Datenbank: | ||
| + | |||
| + | / | ||
| + | |||
| + | Login auf DB-shell mit: | ||
| + | |||
| + | psql -U admin -d zenworks | ||
| + | |||
| + | |||
