MariaDB Dump mit Procedure einspielen[gelöst]

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
oln
Beiträge: 483
Registriert: 05.01.2021 09:41:24

MariaDB Dump mit Procedure einspielen[gelöst]

Beitrag von oln » 13.10.2022 09:50:01

Hallo Forum,
ich habe einen Mariadb-Server. Soweit ist alles gut.
Nun habe ich einen User angelegt der alle Rechte an einer DB hat(meiner Meinung nach).

Code: Alles auswählen

MariaDB [test]> SHOW PRIVILEGES;
+--------------------------+---------------------------------------+--------------------------------------------------------------------+
| Privilege                | Context                               | Comment                                                            |
+--------------------------+---------------------------------------+--------------------------------------------------------------------+
| Alter                    | Tables                                | To alter the table                                                 |
| Alter routine            | Functions,Procedures                  | To alter or drop stored functions/procedures                       |
| Create                   | Databases,Tables,Indexes              | To create new databases and tables                                 |
| Create routine           | Databases                             | To use CREATE FUNCTION/PROCEDURE                                   |
| Create temporary tables  | Databases                             | To use CREATE TEMPORARY TABLE                                      |
| Create view              | Tables                                | To create new views                                                |
| Create user              | Server Admin                          | To create new users                                                |
| Delete                   | Tables                                | To delete existing rows                                            |
| Delete history           | Tables                                | To delete versioning table historical rows                         |
| Drop                     | Databases,Tables                      | To drop databases, tables, and views                               |
| Event                    | Server Admin                          | To create, alter, drop and execute events                          |
| Execute                  | Functions,Procedures                  | To execute stored routines                                         |
| File                     | File access on server                 | To read and write files on the server                              |
| Grant option             | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess                |
| Index                    | Tables                                | To create or drop indexes                                          |
| Insert                   | Tables                                | To insert data into tables                                         |
| Lock tables              | Databases                             | To use LOCK TABLES (together with SELECT privilege)                |
| Process                  | Server Admin                          | To view the plain text of currently executing queries              |
| Proxy                    | Server Admin                          | To make proxy user possible                                        |
| References               | Databases,Tables                      | To have references on tables                                       |
| Reload                   | Server Admin                          | To reload or refresh tables, logs and privileges                   |
| Binlog admin             | Server                                | To purge binary logs                                               |
| Binlog monitor           | Server                                | To use SHOW BINLOG STATUS and SHOW BINARY LOG                      |
| Binlog replay            | Server                                | To use BINLOG (generated by mariadb-binlog)                        |
| Replication master admin | Server                                | To monitor connected slaves                                        |
| Replication slave admin  | Server                                | To start/stop slave and apply binlog events                        |
| Slave monitor            | Server                                | To use SHOW SLAVE STATUS and SHOW RELAYLOG EVENTS                  |
| Replication slave        | Server Admin                          | To read binary log events from the master                          |
| Select                   | Tables                                | To retrieve rows from table                                        |
| Show databases           | Server Admin                          | To see all databases with SHOW DATABASES                           |
| Show view                | Tables                                | To see views with SHOW CREATE VIEW                                 |
| Shutdown                 | Server Admin                          | To shut down the server                                            |
| Super                    | Server Admin                          | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc.                |
| Trigger                  | Tables                                | To use triggers                                                    |
| Create tablespace        | Server Admin                          | To create/alter/drop tablespaces                                   |
| Update                   | Tables                                | To update existing rows                                            |
| Set user                 | Server                                | To create views and stored routines with a different definer       |
| Federated admin          | Server                                | To execute the CREATE SERVER, ALTER SERVER, DROP SERVER statements |
| Connection admin         | Server                                | To bypass connection limits and kill other users' connections      |
| Read_only admin          | Server                                | To perform write operations even if @@read_only=ON                 |
| Usage                    | Server Admin                          | No privileges - allow connect only                                 |
+--------------------------+---------------------------------------+--------------------------------------------------------------------+
41 rows in set (0.000 sec)
Wenn ich nun aber einen Dump einspielen möchte, in dem eine Procedure ist, dann bekomme ich folgenden Fehler:

Code: Alles auswählen

ERROR 1227 (42000) at line 28: Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation
Was kann ich tun? Eigentlich wollte ich dem keine SUPER-Rechte verpassen.
Zuletzt geändert von oln am 17.01.2023 14:52:46, insgesamt 1-mal geändert.
Gruß Ole
AbuseIPDB

Benutzeravatar
Blackbox
Beiträge: 4289
Registriert: 17.09.2008 17:01:20
Lizenz eigener Beiträge: GNU Free Documentation License

Re: MariaDB Dump mit Procedure einspielen

Beitrag von Blackbox » 16.01.2023 21:26:30

Eigentlich beschreibt die Mariadb-Fehlermeldung dein Problem sehr deutlich.

Code: Alles auswählen

1227	42000	ER_SPECIFIC_ACCESS_DENIED_ERROR	Access denied; you need (at least one of) the %s privilege(s) for this operation
Dir fehlen für die geplante Operation die benötigten Berechtigungen.
Eigenbau PC: Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Desktop PC: Dell Inspiron 530 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Notebook: TUXEDO BU1406 - Debian Sid - Kernel: 6.5.13 - Xfce 4.18 mit sway
Alles Minimalinstallationen und ohne sudo/PA/PW.
Rootserver: Rocky Linux 9.3 - Kernel: 5.14

Freie Software unterstützen, Grundrechte stärken!

Benutzeravatar
oln
Beiträge: 483
Registriert: 05.01.2021 09:41:24

Re: MariaDB Dump mit Procedure einspielen

Beitrag von oln » 17.01.2023 07:31:35

Moin,
das weiß ich. Ich habe ja geschrieben, dass ich dem User nicht unbedingt SUPER-Rechte geben wollte.
Tabellen anlegen oder löschen geht, aber keine Procedure? Das geht dann nur mit Super-Rechten? Warum?
Gruß Ole
AbuseIPDB

Benutzeravatar
debilian
Beiträge: 1162
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: MariaDB Dump mit Procedure einspielen

Beitrag von debilian » 17.01.2023 07:39:23

wenn mariadb das braucht, so what?
du kannst ja danach alle Rechte wieder entziehen, die du dem Benutzer nicht geben magst...

;-)
-- nichts bewegt Sie wie ein GNU --

Benutzeravatar
oln
Beiträge: 483
Registriert: 05.01.2021 09:41:24

Re: MariaDB Dump mit Procedure einspielen

Beitrag von oln » 17.01.2023 07:49:29

Ja das könnte ich schon machen. Aber eigentlich sollte der User(was hier die Entwickler sind) den Dump eigenständig einspielen können. Nur nutzen die Entwickler den User auch um die DB in Ihren Anwendungen Abfragen zu machen. Mit SUPER-Rechten kannst du z.B auch die DB löschen. Das wollte ich verhindern. Da muss ich mir noch einmal Gedanken machen wie ich das löse.
Gruß Ole
AbuseIPDB

uname
Beiträge: 12046
Registriert: 03.06.2008 09:33:02

Re: MariaDB Dump mit Procedure einspielen

Beitrag von uname » 17.01.2023 07:52:42

oln hat geschrieben:Aber eigentlich sollte der User(was hier die Entwickler sind) den Dump eigenständig einspielen können.
Leider kenne ich mich mit Datenbanken gar nicht aus. Aber wenn z. B. der root-Benutzer der Datenbank (nicht root von Debian) die Datenbank einspielen kann, so könntest du vielleicht einen Debiansudo-Befehl (diesmal ausgeführt als root von Debian) bauen, der irgendwie als root-Benutzer der Datenbank (nicht root von Debian) den Dump einspielt. Die Entwickler müssten dann den vorgefertigten Befehl per Debiansudo nutzen und natürlich darauf berechtigt sein.
oln hat geschrieben:Mit SUPER-Rechten kannst du z.B auch die DB löschen.
Naja wenn der Dump z. B. manipuliert wurde oder fehlerhaft ist, ist die Datenbank auch kaputt und praktisch gelöscht. ;-)

-> Per Debiansudo sollten natürlich auch nur ausgewählte Dumps (echte Sicherungen ohne direkten Zugriff durch die Entwickler) einspielbar sein.

Benutzeravatar
debilian
Beiträge: 1162
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: MariaDB Dump mit Procedure einspielen

Beitrag von debilian » 17.01.2023 08:01:38

dass der Benutzer dann auch löschen kann ist ja logisch, da einen dump einspielen, auch so eine Art "löschen" ist ;-)
Solange du eine Sicherung der Datenbank hast, ist es doch nicht so schlimm, wenn die mal aus versehen gelöscht wird -
ergo, wenn der Benutzer diese aus Versehen löscht, kann er die ja auch wieder anlegen...

gruss
-- nichts bewegt Sie wie ein GNU --

Benutzeravatar
oln
Beiträge: 483
Registriert: 05.01.2021 09:41:24

Re: MariaDB Dump mit Procedure einspielen

Beitrag von oln » 17.01.2023 08:30:29

Backups sind nicht das Problem. Auch das Einspielen von den Entwicklern ist nicht das Problem. Die sehen schon durch. Wie ich schrieb werden die User aber auch in den Anwendungen benutzt. Wenn dort die Programmierung evtl. fehlerhaft ist und ein böser Mensch das ausnutzt, dann hab ich meine Probleme.
Nicht falsch verstehen, das ist nur ein Entwicklungsserver. Aber auch der steht nach außen um den Kunden evtl. etwas zu zeigen. Und in meinen Logs sehe ich, dass dieser massiv von Scriptkiddies gefoltert wird. Daher meine Bedenken.

PS: Ich hab da noch andere Abwehrmechanismen um die Kiddies im Zaum zu halten.
Gruß Ole
AbuseIPDB

hec_tech
Beiträge: 1093
Registriert: 28.06.2007 21:49:36
Wohnort: Wien
Kontaktdaten:

Re: MariaDB Dump mit Procedure einspielen

Beitrag von hec_tech » 17.01.2023 09:27:07

GRANT CREATE ROUTINE, EXECUTE, ALTER ROUTINE

Probier das mal.

edit: ok hab ich überlesen - hast du eh schon gesetzt

Soviel ich verstehe musst du die Rechte auf die Procedure selbst setzen. Dafür brauchst du aber Super.
Werden die Proceduren so oft geändert? Falls nicht könnte man ja den Dump eventuell Teilen.

Benutzeravatar
debilian
Beiträge: 1162
Registriert: 21.05.2004 14:03:04
Wohnort: 192.168.43.7
Kontaktdaten:

Re: MariaDB Dump mit Procedure einspielen

Beitrag von debilian » 17.01.2023 10:07:18

oln hat geschrieben: ↑ zum Beitrag ↑
17.01.2023 08:30:29
Und in meinen Logs sehe ich, dass dieser massiv von Scriptkiddies gefoltert wird. Daher meine Bedenken.

PS: Ich hab da noch andere Abwehrmechanismen um die Kiddies im Zaum zu halten.
fail2ban schon installiert?
-- nichts bewegt Sie wie ein GNU --

Benutzeravatar
oln
Beiträge: 483
Registriert: 05.01.2021 09:41:24

Re: MariaDB Dump mit Procedure einspielen

Beitrag von oln » 17.01.2023 11:41:43

debilian hat geschrieben: ↑ zum Beitrag ↑
17.01.2023 10:07:18
fail2ban schon installiert?
Sicher doch. :THX:
Gruß Ole
AbuseIPDB

Benutzeravatar
heisenberg
Beiträge: 3473
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: MariaDB Dump mit Procedure einspielen

Beitrag von heisenberg » 17.01.2023 12:43:40

Wie wäre es 2 verschiedene MariaDB-Benutzer zu nehmen?

- Einer für die Anwendung(en) mit minimierten Rechten
- Ein zweiter für Administrative Tätigkeiten der Entwickler
... unterhält sich hier gelegentlich mangels wunschgemäßer Gesprächspartner mal mit sich selbst.

Benutzeravatar
oln
Beiträge: 483
Registriert: 05.01.2021 09:41:24

Re: MariaDB Dump mit Procedure einspielen

Beitrag von oln » 17.01.2023 14:52:18

heisenberg hat geschrieben: ↑ zum Beitrag ↑
17.01.2023 12:43:40
Wie wäre es 2 verschiedene MariaDB-Benutzer zu nehmen?

- Einer für die Anwendung(en) mit minimierten Rechten
- Ein zweiter für Administrative Tätigkeiten der Entwickler
Dahin gingen meine Gedanken auch. Danke für die Hinweise.
Werde das mal als gelöst setzen.
Gruß Ole
AbuseIPDB

Antworten