MySQL SERROR 1045 (28000): Access denied for user 'root'@'localhost' ?!

SimonK91

Lieutenant
Registriert
März 2012
Beiträge
900
Hallo Forum,

ich möchte per Bash Script eine SQL Datenbank mit User anlegen.

Im Script sieht es so aus:

Code:
if [ "$3" = "neu" ]
then

echo -e "Bitte DB-User anlegen:\n"
read dbuser
echo -e "Bitte DB-Name anlegen:\n"
read dbname
echo -e "Bitte DB-Passwort anlegen:\n"
read dbpswd

sudo mysql -e "CREATE DATABASE '${dbname}';"
sudo mysql -e "GRANT ALL PRIVILEGES ON ${dbname}.* TO '${dbuser}'@'localhost' IDENTIFIED BY '$dbpswd';"

echo -e "User $dbuser, mit Passwort $dbpswd sowie Datenbank $dbname wurde erstellt"

fi


Wenn ich das ganze in der Konsole eintippe erhalte ich:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Warum root? Was mache ich falsch?

Danke!
 
Dir fehlt die Authentifizierung am MySQL-Server.

Systemuser root ist nicht gleich dem MySQL-User root!

Du nimmst zwar den DB-Namen, zu erstellenden User und dessen PW auf und reichst das an den MySQL weiter, sagst dem MySQL aber nicht mit welchem MySQL-User er diese Befehle ausführen soll.

Guck mal hier, gleiches Problem

Grundsätzlich solltest du auch den root-user am MySQL durch einen voll berechtigten User mit anderem Namen ersetzen.
 
Zuletzt bearbeitet:
Danke für die flotte Antwort, ja das ist in der Tat genau das selbe Problem.

Ich lese aus dem Thread aber noch nicht ganz heraus, wie ich es jetzt umsetzen müsste dass mir durch die SQL Anmeldung durch
Code:
mysql -h localhost -u root -pPASSWORD
nicht das ganze Script zum stoppen kommt weil die bash dann mySQL in der Konsole aufruft und auf Benutzereingaben wartet...

Wie realisiere ich das mit meinem obigen Script am besten?
 
sudo mysql -h localhost -u root -pPASSWORD -e .....
 
Du nimmst am Anfang den MySQL-User oder zumindest das Passwort des Users auf mit dem die Befehle am MySQL ausgeführt werden ... BSP

Code:
    if [ "$3" = "neu" ]
    then
    echo -e "root-access passwort"
    read pswd
    echo -e "Bitte DB-User anlegen:\n"
    read dbuser
    echo -e "Bitte DB-Name anlegen:\n"
    read dbname
    echo -e "Bitte DB-Passwort anlegen:\n"
    read dbpswd
     
    mysql -u root -p '${pswd}' -e "CREATE DATABASE '${dbname}';"
    mysql -u root -p '${pswd}' -e "GRANT ALL PRIVILEGES ON ${dbname}.* TO '${dbuser}'@'localhost' IDENTIFIED BY '$dbpswd';"
     
    echo -e "User $dbuser, mit Passwort $dbpswd sowie Datenbank $dbname wurde erstellt"
     
    fi

Wenn du nicht root nutzen willst, frage auch den user nochmal ab
 
Ich glaube da stimmt noch was nicht... Ich lese das Passwort ein, dann fragt er aber nochmal "Enter password:" ab, wenn ich dies dann eingebe erscheint
Code:
Enter password:
ERROR 1049 (42000): Unknown database '${pswd}'

Ist die Zeile denn korrekt?:
Code:
 mysql -u root -p '${pswd}' -e "CREATE DATABASE '${dbname}';"

Es scheint so als wird das Passwort nicht aus der shell in die mysql zone übermittelt und/oder wenn es übermittelt werden würde er es als Datenbankname interpretiert?
 
Zuletzt bearbeitet:
Bei -pPASSWORD darf kein Leerzeichen zwischen p und PASSWORD stehen.
 

Ähnliche Themen

Zurück
Oben