Archiv verlassen und diese Seite im Standarddesign anzeigen : MYSQL - Benutzer koennen nicht...
Hallo Board!
Ich versuch schon seit geraumer Zeit benutzer meiner MYSQL DB hinzuzufügen.
Dies ist aber nicht moeglich. Ich habs per phpmyadmin und per commando line versucht keine chance.
Bisher muss ich alles mit root machen, was nicht das optimum ist.
So gehe ich vor:
mysql> GRANT ALL ON test.* TO gustav@localhost IDENTIFIED BY "1234";
oder auch
mysql> GRANT ALL ON test.* TO gustav@"%" IDENTIFIED BY "1234";
selbst ein
mysql> FLUSH Privileges;
füge ich hinterher.
Jedoch sagt mir jedes Script, seis nun phpbb, joomla, oder sonst etwas was auf die DB zugreifen muss, das die connection fehlschlaegt.
Ich bin am Ende mit meinem Latein, hat jemand von Euch einen Tip?
Vielen Dank!
Roger Wilco
14.07.08, 19:06
Welche Meldung liefern die Skripte genau?
Hi,
zum Beispiel bekomme ich dieses angezeigt:
Database connect failed
Mehr leider nicht.
Roger Wilco
14.07.08, 19:15
Wie sieht deine my.cnf und als Beispiel die DB-Konfiguration eines der Skripte aus?
Hmm, ich muss gestehen die my.cnf finde ich nicht. Aber ich finde zwei die wohl mal als sicherung vom vorigen admin abgelegt wurden in etc/ my.cnf.rpm und my.cnf.rpmsave
Von daher kanni ch nicht sagen auf welche conf zugegriffen wird.
DB Config eines scriptes:
$db['host'] = 'localhost';
$db['sock'] = '';
$db['port'] = '';
$db['user'] = 'gustav';
$db['passwd'] = '1234';
$db['db'] = 'test';
achja der inhalt von my.cnf.rpmsave
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
und von der anderen:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
[mysql.server]
user=mysql
basedir=/var/lib
[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
Also identisch....
Poste mal die Ausgaben (als root ausgeführt) von:
mysql> show databases;
mysql> show grants for 'gustav'@'localhost';
Am besten noch dazu:
mysql> use mysql;
mysql> select host,user,password from user;
(und Password-Spalte verfälschen, - Zweck: zu sehen, was es so alles für User gibt (evtl. Password = '').
et voila
mysql> SHOW GRANTS FOR 'gustav'@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for gustav@localhost |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'gustav'@'localhost' IDENTIFIED BY PASSWORD 'PASSWORD' |
| GRANT ALL PRIVILEGES ON `test`.* TO 'gustav'@'localhost' |
+---------------------------------------------------------------------------------------------------------------+
2 rows in set (0.00 sec)
mysql>
Hm, ich dachte, ich hätte mehr wie ein Befehl gepostet...
Falls die DB test existiert, kannst du noch versuchen,
$db['sock'] = '/var/lib/mysql/mysql.sock';
anzugeben. Denn die Verbindung über Socket ist auf jeden Fall schneller als die über Port.
Oh sorry, hatte schon gepostet, hier der rest:
mysql> select host,user,password from user;
+-----------------------+---------------+--------------------------------------- ----+
| host | user | password |
+-----------------------+---------------+--------------------------------------- ----+
| localhost | root | '' |
| localhost.localdomain | root | '' |
| localhost | | |
| localhost.localdomain | | |
| localhost | gustav | '' |
| % | gustav | '' |
+-----------------------+---------------+--------------------------------------- ----+
Hm, ich dachte, ich hätte mehr wie ein Befehl gepostet...
Falls die DB test existiert, kannst du noch versuchen,
$db['sock'] = '/var/lib/mysql/mysql.sock';
anzugeben. Denn die Verbindung über Socket ist auf jeden Fall schneller als die über Port.
Ja leider hatte ioch da schon gepostet als Du wohl gerade am editieren warst ;)
So, soll ich das in my.cnf eintippen?
Aber solche existiert ja noch nicht... bzw nur die my.cnf.rpmsav etc...
Ich hab nur die anderen DBs alle rausgenommen, die laufen alle halt nur unter root...
kannst Du dich an der Konsole mit dem MySQL-Client mit dem Benutzer anmelden? Wie ist die DB-Connection in den Webanwendungen definiert?
Verwendest Du für den Login auch das richtige PW? So wie Du es oben eingegeben hast ist 1234 der Hash des PW, nicht das PW selbst.
Ähm, sag mal, sind die Passwörter beim root und gustav verfälscht oder leer?
Klappt der Versuch aus der Konsole mit:?
#> mysql -u gustav -h localhost -D test -p
Password:
EDIT:
marce war wieder mal schneller 8-(
Hi,
ja ich hab die HAshs geaendert! Das PW ist 1234.
Hab den Befehl ausgefuehrt und folgendes Ergebnis bekommen:
ERROR 1045 (28000): Access denied for user 'gustav'@'localhost' (using password: YES)
ok, dann bitte mal Klartext:
welche Distri? Welche MySQL? Wie hast Du den User konkret angelegt? Wie hast Du dich konkret verbunden.
Da es um Tests geht - lege einen neuen User an, poste bitte die gesamten Befehle mit den exakten, richtigen, unverschlüsselten (also hier im Forum lesbaren) Klartext-Passworten und die komplette Ausgabe.
Dann musst du als root nochmal das Password für den gustav ändern:
mysql> use mysql;
mysql> update user set password=password('geheimes_pw') where user='gustav';
mysql> flush privileges;
Distri: Fedora Core 4 (glaube ich, Fedora auf jedenfall)
# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 972395 to server version: 4.1.14-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> CREATE DATABASE test;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL ON test.* TO gustav@localhost IDENTIFIED BY "1234";
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH Privileges;
Query OK, 0 rows affected (0.00 sec)
Nach temirs post:
mysql> use mysql;
Database changed
mysql> update user set password=password('1234') where user='gustav';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Funktioniert aber auch noch nicht...
da würde nun noch das flush fehlen. Außerdem ist "funktioniert nicht" sicherlich weder die Eingabe noch die Ausgabe, die Du dann an der Konsole machst oder bekommst beim Connect-Versuch.
Folgendes klappt jetzt:
mysql -u gustav -h localhost -D test -p
Enter password:
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 972419 to server version: 4.1.14-standard
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql>
Jedoch noch nicht im web....
Config hierzu:
$db['host'] = 'localhost';
$db['sock'] = '';
$db['port'] = '';
$db['user'] = 'gustav';
$db['passwd'] = '1234';
$db['db'] = 'test';
Aber mit "root" klappts...
Tschuldige wenn ich die Fehlermeldung nicht gepostet hab die ich am Webfrontend bekomme:
Error
Database connect failed
wie lauet der Connect-Befehl, den Du ausführst?
Ich weiss, doofe Frage, aber welcher connect befehl?
Ich hab nur die Daten in das Script eingefuegt, keine Ahnung wo hier die Abfrage statt findet, zumal die Datei nur ein Ansammlung von Werten ist. Aber es ist ganz gleich welches Script es ist, ob phpbb oder sonstiges....
Ich setzt jetzt mal testweise ein phpbb schnell auf und lege dementsprechend einen neuen user etc an. Bis ich ueber die command line wieder verbinden kann. Dann sehe ich ja waehrend der Installation ob der Connect geht oder nicht...
So, einloggen via commandline zur DB klappt.
Bei der Installation zu phpbb bekomm ich folgende Fehlermeldung:
Could not connect to the database, see error message below.
Client does not support authentication protocol requested by server; consider upgrading MySQL client
Ich habs hinbekommen!
Musste folgendes ausfuehren:
mysql> UPDATE mysql.user SET PASSWORD = OLD_PASSWORD('1234') WHERE HOST = 'localhost' AND User = 'hans';
Somit hat es geklappt!
Ich danke Euch allen fuer Eure Muehe und investierte Arbeit sowie Zeit!
Gruss,
Nick
lass mich raten: MySQL 4.x und php 5.x?
Das hätten wir übrigens auch schon ein bisschen früher haben können (je nach ersten Antwortposter evtl. schon in Posting #2) - wenn alle Infos geliefert worden wären...
@marce: ich hätte es anders gedeutet: mysql 5.x und php-mysql-$(alte_Version),
in einem hast du auf jeden Fall Recht: wenn die Infos früher geliefert würden...
naja, in #19 (http://www.linuxforen.de/forums/showpost.php?p=1656556&postcount=19) wurde ja "aus Versehen" :-) die MySQL-Version 4.1.14 erwähnt - von dem her hatte ich eher auf die Variante getippt.
Die von Dir gepostete Kombination kenne ich zu genüge (und die "Freuden" damit) - erfreulicherweise wird durch einen "use old passwords" in der my.cnf vieles einfacher :-)
Hee, ich bin Anfaenger und hab keine Ahnung welche Infos Ihr haettet gebrauchen koennen ;)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.