PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MYSQL - Benutzer koennen nicht...



nickelo
14.07.08, 19:02
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?

nickelo
14.07.08, 19:13
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?

nickelo
14.07.08, 19:19
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';

nickelo
14.07.08, 19:22
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....

temir
14.07.08, 19:36
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 = '').

nickelo
14.07.08, 19:40
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>

temir
14.07.08, 19:46
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.

nickelo
14.07.08, 19:46
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 | '' |
+-----------------------+---------------+--------------------------------------- ----+

nickelo
14.07.08, 19:48
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...

marce
14.07.08, 19:49
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.

temir
14.07.08, 19:52
Ä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-(

nickelo
14.07.08, 19:59
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)

marce
14.07.08, 20:05
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.

temir
14.07.08, 20:07
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;

nickelo
14.07.08, 20:14
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...

marce
14.07.08, 20:21
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.

nickelo
14.07.08, 20:22
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...

nickelo
14.07.08, 20:23
Tschuldige wenn ich die Fehlermeldung nicht gepostet hab die ich am Webfrontend bekomme:


Error
Database connect failed

marce
14.07.08, 20:37
wie lauet der Connect-Befehl, den Du ausführst?

nickelo
14.07.08, 20:45
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...

nickelo
14.07.08, 20:51
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

nickelo
14.07.08, 20:56
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

marce
15.07.08, 06:12
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...

temir
15.07.08, 06:38
@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...

marce
15.07.08, 06:43
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 :-)

nickelo
15.07.08, 15:50
Hee, ich bin Anfaenger und hab keine Ahnung welche Infos Ihr haettet gebrauchen koennen ;)