Verbindung herstellen

michi@sysvorOrt ~ $ /etc/init.d/mysql start
* mysql: superuser access required
michi@sysvorOrt ~ $ su
Passwort:
sysvorOrt /home/michi # /etc/init.d/mysql start
* WARNING: mysql has already been started
sysvorOrt /home/michi # /etc/init.d/mysql status
* status: started
sysvorOrt /home/michi #
MySQL einloggen

ysvorOrt /home/michi # mysql -h localhost -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 8.0.32 Gentoo Linux mysql-8.0.32-r2
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
vorhandene Datenbanken anzeigen:

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| test |
| typeitin |
| zeiterfassung |
+--------------------+
7 rows in set (0,00 sec)
mysql>
gewünschte Datenbank auswählen

mysql> USE zeiterfassung;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
Um festzustellen, ob ein Benutzer Rechte für eine bestimmte Datenbank hat, können Sie den folgenden Befehl in der MySQL-Shell verwenden:
SHOW GRANTS FOR 'username'@'host';
Ersetzen Sie ‚username‘ durch den Namen des Benutzers und ‚host‘ durch den Hostnamen oder die IP-Adresse, von der aus sich der Benutzer anmelden darf35.
Dieser Befehl zeigt Ihnen alle Berechtigungen an, die dem angegebenen Benutzerkonto erteilt wurden. Sie können daraus ablesen, auf welche Datenbanken und Tabellen der Benutzer Zugriff hat und welche Aktionen er durchführen darf.
Wenn Sie die Berechtigungen für den aktuell angemeldeten Benutzer überprüfen möchten, können Sie den folgenden vereinfachten Befehl verwenden:
SHOW GRANTS FOR CURRENT_USER();
Diese Befehle liefern Ihnen detaillierte Informationen über die Rechte des Benutzers, einschließlich spezifischer Berechtigungen für Datenbanken und Tabellen
Tabelle hinzufügen

Dieser Befehl erstellt eine Tabelle mit drei Spalten
CREATE TABLE buttons (
id INT AUTO_INCREMENT PRIMARY KEY,
button_kurz VARCHAR(255) NOT NULL,
button_text TEXT
);
Erklärung der einzelnen Teile des Befehls:
- ‚id‘ als automatisch inkrementierender Primärschlüssel
- ‚button_kurz‘ für die kurze Bezeichnung des Buttons
- ‚button_text‘ für den längeren Text, der dem Button zugeordnet ist

- Vergiss nicht, das Semikolon am Ende des Befehls.
Du kannst diesen SQL-Befehl in deiner MySQL-Datenbank ausführen, z.B. über die MySQL-Konsole oder ein Datenbankverwaltungs-Tool wie phpMyAdmin.
Um eine MySQL-Tabelle mit dem Namen „uebersetzung“ und den gewünschten Spalten anzulegen, können Sie den folgenden SQL-Befehl verwenden:
CREATE TABLE uebersetzung (
ID INT,
Deutsch TEXT,
Englisch TEXT
);
Dieser Befehl erstellt eine Tabelle mit den folgenden Eigenschaften:
1. Der Tabellenname ist „uebersetzung“.
2. Die erste Spalte „ID“ ist vom Typ INTEGER (INT).
3. Die zweite Spalte „Deutsch“ ist vom Typ TEXT, was für längere Texteinträge geeignet ist.
4. Die dritte Spalte „Englisch“ ist ebenfalls vom Typ TEXT
Wenn du möchtest, dass die ID-Spalte automatisch inkrementiert wird und als Primärschlüssel dient, kannst du den Befehl wie folgt anpassen:
Diese Version stellt sicher, dass jeder Eintrag eine eindeutige ID erhält:
CREATE TABLE uebersetzung (
ID INT NOT NULL AUTO_INCREMENT,
Deutsch TEXT,
Englisch TEXT,
PRIMARY KEY (ID)
);
Tabelle auswählen

mysql> show tables;
+-------------------------+
| Tables_in_zeiterfassung |
+-------------------------+
| zeiterfassung |
+-------------------------+
1 row in set (0,01 sec)
mysql>
Tabelle löschen

mysql> drop table if exists test;
Query OK, 0 rows affected, 1 warning (0,00 sec)
Spalte hinzufügen

mysql> ALTER TABLE zeiterfassung ADD COLUMN (spalte2 char(50));
Query OK, 0 rows affected (0,01 sec)
Records: 0 Duplicates: 0 Warnings: 0


Um einen neuen Eintrag in die Tabelle „uebersetzung“ hinzuzufügen, verwenden Sie den INSERT INTO Befehl. Hier ist der SQL-Befehl, um „fM“ als deutschen Text und „sc“ als englischen Text einzufügen:
INSERT INTO uebersetzung (Deutsch, Englisch) VALUES ('fM', 'sc');
Dieser Befehl fügt eine neue Zeile in die Tabelle ein, wobei:
- ‚fM‘ in die Spalte „Deutsch“ eingefügt wird
- ’sc‘ in die Spalte „Englisch“ eingefügt wird
Die ID-Spalte wurde in diesem Befehl nicht explizit angegeben. Wenn Sie die ID-Spalte als AUTO_INCREMENT definiert haben (wie im vorherigen Beispiel), wird MySQL automatisch eine eindeutige ID für diesen Eintrag generieren.
Wenn Sie die ID manuell festlegen möchten oder wenn die ID-Spalte nicht als AUTO_INCREMENT definiert ist, können Sie den Befehl wie folgt anpassen:
INSERT INTO uebersetzung (ID, Deutsch, Englisch) VALUES (1, 'fM', 'sc');
Hierbei wird die ID explizit auf 1 gesetzt. Stellen Sie sicher, dass Sie eine eindeutige ID verwenden, die noch nicht in der Tabelle existiert.
Spalte löschen

mysql> ALTER TABLE tbl_namen DROP COLUMN spalte2;
Query OK, 0 rows affected (0,02 sec)
Records: 0 Duplicates: 0 Warnings: 0
Inhalt der Spalten anzeigen lassen

mysql> select kommen from zeiterfassung;
+---------------------+
| kommen |
+---------------------+
| 2024-05-12 10:48:49 |
| 2024-05-12 10:53:00 |
| 2024-05-12 10:55:07 |
| 2024-05-12 13:02:51 |
| 2024-05-12 13:02:57 |
| 2024-05-12 14:54:11 |
+---------------------+
6 rows in set (0,01 sec)
Alle Werte anzeigen lassen:

mysql> select * from zeiterfassung;
+-------------+------+---------------------+-------+--------+
| Name kommen | wert | kommen | gehen | nummer |
+-------------+------+---------------------+-------+--------+
| NULL | NULL | 2024-05-12 10:48:49 | NULL | NULL |
| NULL | NULL | 2024-05-12 10:53:00 | NULL | NULL |
| NULL | NULL | 2024-05-12 10:55:07 | NULL | NULL |
| NULL | NULL | 2024-05-12 13:02:51 | NULL | NULL |
| NULL | NULL | 2024-05-12 13:02:57 | NULL | NULL |
| NULL | NULL | 2024-05-12 14:54:11 | NULL | NULL |
+-------------+------+---------------------+-------+--------+
6 rows in set (0,00 sec)
mysql>
Datentyp ändern:

mysql> alter table zeiterfassung modify column nummer int;
Query OK, 6 rows affected (0,03 sec)
Records: 6 Duplicates: 0 Warnings: 0
automatische Nummern zur Auswahl des Datensatzes.
Um eine neue Spalte mit AUTO_INCREMENT
hinzuzufügen, müssen Sie sicherstellen, dass diese Spalte als Primärschlüssel oder als eindeutiger Index verwendet wird. In MySQL kann es nur eine AUTO_INCREMENT
-Spalte pro Tabelle geben, und diese muss vom Datentyp INT
(oder einem ähnlichen numerischen Typ) sein. Hier ist ein Beispiel, wie Sie dies erreichen können:
- Fügen Sie eine neue Spalte hinzu:
ALTER TABLE zeiterfassung ADD nummer INT AUTO_INCREMENT PRIMARY KEY;
Falls bereits eine nummer
-Spalte vorhanden ist und Sie diese in eine AUTO_INCREMENT
-Spalte umwandeln möchten, gehen Sie wie folgt vor:
- Primärschlüssel und AUTO_INCREMENT setzen:
ALTER TABLE zeiterfassung MODIFY nummer INT AUTO_INCREMENT PRIMARY KEY;
Hinweise:
- Wenn bereits eine andere Spalte als Primärschlüssel definiert ist, müssen Sie diese Definition zuerst ändern, da es nur einen Primärschlüssel pro Tabelle geben kann.
- Wenn die
nummer
-Spalte bereits Daten enthält, die keine eindeutigen Werte haben, wird es zu Konflikten kommen. Stellen Sie sicher, dass die bestehenden Werte dernummer
-Spalte entweder eindeutig sind oder die Spalte vor dem Ändern aufAUTO_INCREMENT
leer ist.

Um eine bestimmte Nummer und die dazugehörigen Daten aus einer Tabelle in MySQL zu löschen, verwendest du den DELETE
-Befehl. Hier ist die allgemeine Syntax für den DELETE
-Befehl:
DELETE FROM tabellenname WHERE bedingung;
In deinem Fall möchtest du eine bestimmte nummer
aus der Tabelle zeiterfassung
löschen. Angenommen, du möchtest die Nummer 3
löschen, dann wäre der Befehl:
DELETE FROM zeiterfassung WHERE nummer = 3;
Dieser Befehl löscht die Zeile aus der Tabelle zeiterfassung
, in der die nummer
den Wert 3
hat. Hier ist der gesamte Prozess, um sicherzustellen, dass du die richtige Zeile löschst:
- Überprüfe die Daten, um sicherzustellen, dass du die richtige Zeile identifizierst:
SELECT * FROM zeiterfassung WHERE nummer = 3;
- Wenn die Daten korrekt sind, führe den
DELETE
-Befehl aus:DELETE FROM zeiterfassung WHERE nummer = 3;
- Überprüfe, ob die Zeile erfolgreich gelöscht wurde:
sql SELECT * FROM zeiterfassung;
Hier ist ein vollständiges Beispiel:
-- Überprüfen der Daten
SELECT * FROM zeiterfassung WHERE nummer = 3;
-- Löschen der Zeile mit nummer = 3
DELETE FROM zeiterfassung WHERE nummer = 3;
-- Überprüfen, ob die Zeile gelöscht wurde
SELECT * FROM zeiterfassung;
Stelle sicher, dass du die richtige Nummer auswählst, da der DELETE
-Befehl dauerhaft Daten aus der Tabelle entfernt.

MySQL beenden

Überprüfung in einer PHP Datei ob die SQL Verbindung funktioniert hat:
// Verbindung herstellen und Fehlerberichterstattung aktivieren
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
try {
$conn = new mysqli($servername, $username, $password, $database);
} catch (mysqli_sql_exception $e) {
die("Verbindung fehlgeschlagen: " . $e->getMessage());
}
Um die Benutzer in einer MySQL-Konsole anzuzeigen, können Sie folgende Methoden verwenden:
Alle Benutzer anzeigen:
Führen Sie diesen SQL-Befehl aus:
SELECT user, host FROM mysql.user;

Dies zeigt eine Liste aller Benutzerkonten und die zugehörigen Hosts an.
- Detailliertere Informationen anzeigen:
Für mehr Details über die Benutzer können Sie zusätzliche Spalten abfragen:SELECT user, host, authentication_string, plugin FROM mysql.user;
Dies gibt Ihnen zusätzliche Informationen wie das Authentifizierungsverfahren. - Benutzer von einem bestimmten Host filtern:
Um nur Benutzer anzuzeigen, die sich von einem bestimmten Host verbinden, verwenden Sie:SELECT user, host FROM mysql.user WHERE host = 'localhost';
Ersetzen Sie ‚localhost‘ nach Bedarf. - Aktuell angemeldeten Benutzer anzeigen:
Verwenden Sie die FunktionSELECT CURRENT_USER();
Dies zeigt den aktuell angemeldeten Benutzer und den Hostnamen an.