Datenbankverbindung nicht möglich

Lord_Icon

Member
Hi,

ich bin mir sicher, das ich die in der configurationsdatei alles korrekt eingetragen habe, was passwortörter und username betrifft.

Trotzdem kommt auf der Shell:

/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
/usr/bin/mysqladmin: connect to server at 'password' failed
error: 'Unknown MySQL server host 'password' (1)'
Check that mysqld is running on password and that the port is 3306.
You can check this by doing 'telnet password 3306'
Datenbankverbindung ungültig

Code:
### Mysql Zugangsdaten
$serverhost = "localhost"; // MySQL HOST ( localhost)
$owner = "root";
$dbpasswd = "**********";
$dbname = "Datenbank-name";


Mit phpmyadmin kommt ich mit root sauber rein.

Handhabt mysqladmin das irgendwie anderes ?
 
Du gibst zwar brav an, welche Ausgaben Du erhälst, aber nicht, welche Eingaben Du gemacht hast.
Und der Hinweiß, daß Du es in der Config-Datei bestimmt richtig gemacht hast, ist ja schön, aber ist es wirklich so? Und in welcher Datei hast Du es gemacht?

Fragen über Fragen...

PS: "using password: NO" ist oft ein Zeichen dafür, daß das Passwort nicht übergeben wird.
Leider weiß ich nicht, wo und wie Du versucht hast es zu verfüttern.

huschi.
 
hmm... ja...

es ist ein Script von einen Anbieter.

Nur denke ich mal, das dort nicht das Problem liegt. ICh hab den Server frisch aufgesetzt.
Vermuten tu ich deshalb, das ich ne conf Datei vergessen habe zu bearbeiten.

Die my.conf hab ich aber schon. Ist natürlich fraglich, ob mysqladmin auch noch eine eigene hat oder ob dieser auch auf die mx.conf zugreift.

Ok.. zu deinen Fragen.

Code:
system-new:~ # ./install.php

/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
/usr/bin/mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
/usr/bin/mysqladmin: connect to server at 'password' failed
error: 'Unknown MySQL server host 'password' (1)'
Check that mysqld is running on password and that the port is 3306.
You can check this by doing 'telnet password 3306'
Datenbankverbindung ungültig

Das Programm selbst hat nur 2 Datein. einmal die config.cfg und einmal die install.php.
Ich hänge die beide mal als txt an.

Aber wie gesagt = ich VERMUTE mal nicht, das es am Script liegt.
Grund. Ich komme ja nichtmal per Shell und manueller Übergabe des Passwortes rein..
Code:
system-new:~ # mysqladmin -u root password '********'
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'
 

Attachments

system-new:~ # mysqladmin -u root password '********'
Mein "man mysqladmin" würdest Du erkennen, daß dieser Syntax so verkehrt ist.

Und ein Blick in das install-Script verrät Dir auch, daß es dort einen Schreibfehler gibt.

huschi.
 
oki... hab mir jetzt fast ne stunde die manuell durchgelesen...
aber irgendwie komm ich hier nicht zu potte. Obwohl die man. ja mehr als eindeutig is.

Manuell
-u, --user=name User for login if not current user.
--password[=password], -p[password]

The password to use when connecting to the server. If you use the short option form (-p), you cannot have a space between the option and the password. If you omit the password value following the --password or -p option on the command line, you are prompted for one.

fnage ich also "klein" an und übergebe erstmal nur die minimalsten Parameter = meckert er schon über den syntax.


Code:
mysqladmin -u root
mysqladmin --user=root
mysqladmin user=root

Kann mir einer einen kleinen Tipp geben ?

exec("/usr/bin/mysqladmin -u root password '$dbpasswd';");
exec("/usr/bin/mysqladmin -u root --password='$dbpasswd' -h localhost password '$dbpasswd';");
exec("/usr/bin/mysqladmin -u root --password='$dbpasswd' -h ".gethostbyaddr($vhost_ip)." password '$dbpasswd';");
 
Ich habe doch oben erst bemängelt, daß zu einer Ausgabe auch eine Eingabe gehört.
Nun bringst Du plötzlich nur Eingabe ohne Ausgabe.
Also nochmal deutlich: Immer beides angeben!

exec("/usr/bin/mysqladmin -u root password '$dbpasswd';");
exec("/usr/bin/mysqladmin -u root --password='$dbpasswd' -h localhost password '$dbpasswd';");
Das Problem hierbei ist:
Diese Tests sind absoluter Quatsch und der Entwickler hat (fast) überhaupt nicht nachgedacht bzw. hier fehlen einfach die nötigen Tests um sich zu vergewissern, welche der Aufrufe noch getätigt werden müssen. (Theoretisch sowie so höchstens der erste.)
Die müssen ja fast zwangsweise 1 bis 3 Fehler ausspucken.

Ach ja, und ich lag falsche: Der Syntax ist nicht falsch sondern verwirrend, weil er in einer Zeile einmal die Passwort-Option und sonst immer das Passwort-Command meint.

Aber wie gesagt:
Die Fehler sind quatsch und können einfach übergangen werden.

huschi.
 
Hallo Huschi,

das mit der Ausgabe hab ich schon verstanden... nur habe ich ja dort eine falsche syntax drin und mysql spuckt mit alle möglichen Befehle aus. Diese hier zu posten würde sicherlich den Rahmen sprengen.


Da du dich ja nuin korrigiert hast, scheint der verwendete Sysntax ja doch korrekt zu sein.
Drum würde ich deine alte Frage nochmal puschen wollen.

"using password: NO" ist oft ein Zeichen dafür, daß das Passwort nicht übergeben wird.
Leider weiß ich nicht, wo und wie Du versucht hast es zu verfüttern.

Antwort:
system-new:~ # mysqladmin -u root password=********
mysqladmin: connect to server at 'localhost' failed
error: 'Access denied for user 'root'@'localhost' (using password: NO)'

wenn also kein Passwort übergeben wird (ich hab aber eins angegeben) dann muß es ja entweder ein eingabefehlersein, oder aber root hat keine Rechte.
Wenn ich das in derletzten Zeit richtig gelesen habe = phpmyadmin hat nicht unbedingt was mit der shell zu zu. Sprich = rootlogin bei phpmyadmin = ja und auf der shell nein..

Ist das so korrekt? Wo kann ich es denn prüfen, ob root conneten darf ?
die my.cnf würde es zumindest nicht ausgeschlossen. Und das man da root expliziet erlauben muß, hab ich auch nicht gefunden.


Danke nochmal für deine Hilfe
 
ja... Jetzt.
Aber leider nein

mysqladmin Ver 8.41 Distrib 5.0.45, for suse-linux-gnu on x86_64
Copyright (C) 2000-2006 MySQL AB
This software comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to modify and redistribute it under the GPL license

Administration program for the mysqld daemon.
Usage: mysqladmin [OPTIONS] command command....
-c, --count=# Number of iterations to make. This works with -i
(--sleep) only.
-#, --debug[=name] Output debug log. Often this is 'd:t:o,filename'.
-f, --force Don't ask for confirmation on drop database; with
multiple commands, continue even if an error occurs.
-C, --compress Use compression in server/client protocol.
--character-sets-dir=name
Directory where character sets are.
--default-character-set=name
Set the default character set.
-?, --help Display this help and exit.
-h, --host=name Connect to host.
-p, --password[=name]
Password to use when connecting to server. If password is
not given it's asked from the tty.
-P, --port=# Port number to use for connection.
--protocol=name The protocol of connection (tcp,socket,pipe,memory).
-r, --relative Show difference between current and previous values when
used with -i. Currently works only with extended-status.
-O, --set-variable=name
Change the value of a variable. Please note that this
option is deprecated; you can set variables directly with
--variable-name=value.
-s, --silent Silently exit if one can't connect to server.
-S, --socket=name Socket file to use for connection.
-i, --sleep=# Execute commands again and again with a sleep between.
--ssl Enable SSL for connection (automatically enabled with
other flags). Disable with --skip-ssl.
--ssl-ca=name CA file in PEM format (check OpenSSL docs, implies
--ssl).
--ssl-capath=name CA directory (check OpenSSL docs, implies --ssl).
--ssl-cert=name X509 cert in PEM format (implies --ssl).
--ssl-cipher=name SSL cipher to use (implies --ssl).
--ssl-key=name X509 key in PEM format (implies --ssl).
--ssl-verify-server-cert
Verify server's "Common Name" in its cert against
hostname used when connecting. This option is disabled by
default.
-u, --user=name User for login if not current user.
-v, --verbose Write more information.
-V, --version Output version information and exit.
-E, --vertical Print output vertically. Is similar to --relative, but
prints output vertically.
-w, --wait[=#] Wait and retry if connection is down.
--connect_timeout=#
--shutdown_timeout=#

Variables (--variable-name=value)
and boolean options {FALSE|TRUE} Value (after reading options)
--------------------------------- -----------------------------
count 0
force FALSE
compress FALSE
character-sets-dir (No default value)
default-character-set (No default value)
host localhost
port 3306
relative FALSE
socket /var/lib/mysql/mysql.sock
sleep 0
ssl FALSE
ssl-ca (No default value)
ssl-capath (No default value)
ssl-cert (No default value)
ssl-cipher (No default value)
ssl-key (No default value)
ssl-verify-server-cert FALSE
user root
verbose FALSE
vertical FALSE
connect_timeout 43200
shutdown_timeout 3600

Default options are read from the following files in the given order:
/etc/my.cnf ~/.my.cnf /etc/my.cnf
The following groups are read: mysqladmin client
The following options may be given as the first argument:
--print-defaults Print the program argument list and exit
--no-defaults Don't read default options from any options file
--defaults-file=# Only read default options from the given file #
--defaults-extra-file=# Read this file after the global files are read

Where command is a one or more of: (Commands may be shortened)
create databasename Create a new database
debug Instruct server to write debug information to log
drop databasename Delete a database and all its tables
extended-status Gives an extended status message from the server
flush-hosts Flush all cached hosts
flush-logs Flush all logs
flush-status Clear status variables
flush-tables Flush all tables
flush-threads Flush the thread cache
flush-privileges Reload grant tables (same as reload)
kill id,id,... Kill mysql threads
password new-password Change old password to new-password, MySQL 4.1 hashing.
old-password new-password Change old password to new-password in old format.

ping Check if mysqld is alive
processlist Show list of active threads in server
reload Reload grant tables
refresh Flush all tables and close and open logfiles
shutdown Take server down
status Gives a short status message from the server
start-slave Start slave
stop-slave Stop slave
variables Prints variables available
version Get version info from server
 
Da steht:
Code:
mysqladmin [OPTIONS] command
also z.B.
Code:
mysqladmin -u root --password='deintollespasswort' -h localhost status
Bitte beachten das ist jetzt nur ein Beispiel. Du musst es also an deine Bedürfnisse anpassen. Dient nur dazu zu testen ob alles funktioniert.
Für Dich geht es dann in folgende Richtung:
Code:
mysqladmin -u root --password='deintollespasswort' -h localhost password "my new password"
 
Last edited by a moderator:
ahhhhh ... freu

mysqladmin -u root --password='123456' -h localhost status
Uptime: 3056 Threads: 1 Questions: 1 Slow queries: 0 Opens: 12 Flush tables: 1 Open tables: 6 Queries per second avg: 0.000

Dann is ja doch alles "friede-freude-eierkuchen"

Aber wenn man ein Status ranhängen muß, dann is das script doch "müll"

Code:
		exec("/usr/bin/mysqladmin -u root password '$dbpasswd';"); 
		exec("/usr/bin/mysqladmin -u root --password='$dbpasswd' -h localhost password '$dbpasswd';");
        exec("/usr/bin/mysqladmin -u root --password='$dbpasswd' -h ".gethostbyaddr($vhost_ip)." password '$dbpasswd';");


Was wird denn mit dem Script erreicht ?
"prüft" der Entwickler nur ob die DB-Verbindung einfach nur besteht ?
 
Du musst kein "status" anhängen. "status" ist ein command. Was dein Script angeht, da habe ich keine Ahnung, dass sieht aus meiner Sicht eh recht komisch aus.
Übrigens auf mysql.com gibt eine super Doku zum Thema mysqladmin.

Dein Script setzt übrigens das Passwort deines Root-Accounts(der Datenbank) neu. Wo da der Sinn ist, frag mich nicht.
 
ystem-new:~ # mysqladmin -u root password=********
Und Du hast hoffentlich inzwischen verstanden, was hieran falsch ist, oder?
Weil dann verstehst Du auch die allgemeine Problematik und dem Unterschied zwischen der Option und dem Command "password".

Dein Script setzt übrigens das Passwort deines Root-Accounts(der Datenbank) neu. Wo da der Sinn ist, frag mich nicht.
Genau!!!
Daher sagte ich bereits:
Sch**** auf die Fehlermeldung!
Aber unser Lördchen (siehe "Die Zwei") hat das nicht wirklich gelesen... ;)

huschi.
 
Back
Top