Notizen
Generelle Notizen
Benutzerverwaltung
- Beim Anlegen neuer Benutzer reicht es nicht, den Benutzernamen anzugeben; es muss auch der Host (die Source-Adresse) angegeben werden
- local_test@localhost
- local_test@127.0.0.1
- local_test@'192.168.11.12'
- local_test@'192.168.%'
- local_test@'%'
- Anmerkung: Es handelt sich um unterschiedliche Benutzer
- Benutzernamen sollten so explizit wie möglich gewählt werden
- Benutzer können entweder implizit über CREATE (danach müssen die Rechte separat zugewiesen werden) oder explizit über GRANT erzeugt werden.
- Man kann einen Benutzer über INSERT hinzufügen; dies sollte jedoch nicht gemacht werden, da keine Abhängigkeiten berücksichtigt werden
- Geändert wir dein Benutzer über ALTER USER, gelöscht wird ein Benutzer über DROP USER
- Die Berechtigungen eines Benutzers werden über REVOKE entzogen
Berechtigungen
- Gegensätzliche Berechtigungen sind möglich (z.B. GRANT CREATE von localhost ABER 'nur' GRANT SELECT von 192.168.11.12)
- Global gesetzt Rechte können nicht unterhalb eingeschränkt werden; daher direkt an Schema/Datenbanken/Tabellen/Spalte berechtigen
- Um Rechte abzufragen, bieten sich zwei Schritte an:
- 1) Abfrage der eingerichteten Benutzer nach Username (hier 'root')
- select * from mysql.user where user = 'root';
- 2) Abfrage der einzelnen gelisteten Benutzer (hier 'root@localhost')
- show grants for root@localhost;
Konfiguration
- Die Konfig-Dateien lassen sich über mysql –help –verbose|grep '\.my.cnf' finden
- Die Standard-Pfade für MySQL-Konfigurationen sind /etc/my.cnf, /etc/mysql/my.cnf und ~/.my.cnf
- Globale Variablen in mysql können mit show global variables\G angezeigt werden; sollen nur bestimmte Variablen angezeigt werden, kann die Ausgabe mit LIKE gefiltert werden z.B. show global variables like '%char%'\G
- Status-Variablen können über show global status angezeigt werden
- Wichtige Parameter
- Buffers Anteil von RAM un Bytes für InnoDB und MyISAM
- innodb_buffer_pool_size - ca. 70-80% vom verfügbaren RAM
- key_buffer_size - ca. 25% vom verfügbaren RAM
- InnoDB
- innodb_file_per_table - jede InnoDB Tabelle ist eine separate Datei
- innodb_log_file_size - REDO log files, empfohlen 2x256M
- innodb_flush_log_at_trx_commit: [0,1,2]
- ACID: 1 - Konsistenz!
- Asynchron: 0,2 - Performance!
- Connections
- Tabellenzugriffe
- table_open_cache: max_connections x: max. Anzahl Tabellen per Abfrage
- table_definition_cache: für Tabellendefinitionen
- query_cache_type / query_cache_size - Cache für Result Sets
- Case-Sensitiv für SQL Abfragen
- Mutex-basiert, daher schlecht für viele parallele Zugriffe
- SQL Logging (binlogs)
- sql_log_bin [0,1] / [ON/OFF] - Client Aktivitäten ins binlog schreiben (per Session setzen)
- log_bin: wichtig für Replikation und BAckups wiederherstellen. Gilt global für alle Sessions
Best Practice
- Für eine bessere Lesbarkeit bietet sich an, einen SQL-Befehl nicht mit ; sondern mit \G abzuschließen
Serverdaten
Server
95.217.184.106 2a01:4f9:c010:88d3::/64 antoniya-kuhlmeyer-1
49.12.33.167 2a01:4f8:c17:97fe::/64 sandra-attermeyer-1
49.12.64.65 2a01:4f8:c17:676b::/64 patrick-betschner-1
Zugangsdaten
Servername: patrick-betschner-1
Adresse: root@49.12.64.65
Passwort: Igh5Zaet
Zugangsdaten
Servername: sandra-attermeyer-1
Adresse: root@49.12.33.167
Passwort: Igh5Zaet
Installation der Testumgebung
Vorgegebene Installation
root@patrick-betschner-1:~# cat /etc/os-release NAME="Ubuntu" VERSION="20.04 LTS (Focal Fossa)" ID=ubuntu ID_LIKE=debian PRETTY_NAME="Ubuntu 20.04 LTS" VERSION_ID="20.04" HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" VERSION_CODENAME=focal UBUNTU_CODENAME=focal
# MySQL installieren #------------------------------------ apt update apt-get install mysql-server # MySQL-Service prüfen #------------------------------------ systemctl status mysql # ODER service mysql status
Erste Schritte im CLI
#MySQL-Bash starten #------------------------------------ mysql #MySQL-Befehle ausführen #------------------------------------ status #Zeige Infos zum Server show databases; #Zeige alle Datenbanken