[GELÖST] BASH-Script: Erstellen einen MySqlDB mit Variablen als DB-Name

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
mcdaniels
Beiträge: 460
Registriert: 09.01.2006 23:31:02
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Steiermark
Kontaktdaten:

[GELÖST] BASH-Script: Erstellen einen MySqlDB mit Variablen als DB-Name

Beitrag von mcdaniels » 18.02.2024 16:47:58

Hallo zusammen,
ich versuche gerade mir via Script eine DB zu erstellen. Im Script wird u.a. der gewünschte DB User, der Name der DB und das gewünschte Passwort abgefragt.

Code: Alles auswählen

read -p "DB-Name: " dbname
read -p "DB-Benutzer: " dbuser
read -p "DB-Passwort: " dbpasswd
danach mache ich:

Code: Alles auswählen

mysql -u root <<-EOF
CREATE USER '$dbuser'@'localhost' IDENTIFIED BY '$dbpasswd';
CREATE DATABASE IF NOT EXISTS '$dbname' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
FLUSH PRIVILEGES;
Der User wird mir noch angelegt.

Beim zweiten SQL Statement (dem Anlegen der DB) erhalte ich dann:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''nc4' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci' at line 1


Wobei das nc4 von der Variable $dbname kommt.

Kann mir eventuell jemand sagen, weshalb es hier zu diesem Fehler kommt?

Danke!

EDIT:

So scheint es zu funktionieren, obwohl mir nicht ganz klar ist, weshalb man die geschwungenen Klammern braucht...

Code: Alles auswählen

mysql -u root <<-EOF
CREATE DATABASE IF NOT EXISTS ${dbname} CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER '${dbuser}'@'localhost' IDENTIFIED BY '${dbpasswd}';
GRANT ALL ON ${dbname}.* to "${dbuser}"@"localhost";
FLUSH PRIVILEGES;
EOF

Antworten