PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : lampp: keine connection über localhost auf mysql



BennyB2912
13.12.05, 09:15
hallo linux freunde,

ich hab hier ein kleines problem, mit dem ich mich schon über 3 wochen beschäftige, aber als keine lösung finde. bin ein absoluter linux anfänger und hoffe, dass ich hier ein paar profis finde, die mir behilflich sein können. wahrscheinlich ist für euch mein problem eher lächerlich, so dass ihr die lösung wie nix aus dem ärmel schütteln könnt.

ich möchte euch kurz mein problem schildern:

ich hab im internet eine auktionssoftware laufen, die in perl geschrieben ist und natürlich eine mysql datenbank benötigt. bevor ich updates durchführen will, möchte ich das vorher zu hause auf einem testserver testen. d.h. der server soll exakt so sein wie im netz. gleicher name, gleiche db (name, user, pw) usw. xampp scheint mir für mich als windows idioten genau das richtige zu sein.

als system nutze ich suse 10, xampp ist installiert, vhost eingerichtet (bei www.meineseite.de komme ich auf den vhost und nicht ins internet, genau so wie ich es haben wollte), in mysql eine datenbank eingerichtet (mit hilfe von phpmyadmin) mit dem gleichen usernamen und pw wie im internet auch. alles bestens, ich war glücklich. ein testscript in perl, was mir zeigen sollte, ob alle benötigten komponenten installiert sind, lief auch wunderbar.

das einzige problem was jetzt auftritt ist dieses:
wenn ich das install.pl script ausführe, was die auktionssoftware auf der testumgebung installieren soll, bekomme ich einen fehler "keine verbindung zur datenbank" wenn ich als datenbanknamen "localhost" eintrage. nehme ich hingegen 127.0.0.1 als name klappt es. im internet läuft es mit localhost. als möchte ich natürlich, dass es auch zu hause damit läuft, weil ich probleme befürchte, wenn ich zu hause mit 127.0.0.1 teste und dann auf den server im internet kopiere, wo es ja mit localhost läuft. (ich habs übrigens in der zwischenzeit im internet ausprobiert, mit 127.0.0.1 läuft es definitiv nicht)
über die shell komme ich mit dem mysql befehl sowohl mit localhost als auch mit 127.0.0.1 auf die datenbank. das funktioniert also auch, an der datenbank kann es nicht liegen. jetzt hat mir irgendjemand erklärt (ich weiss nicht ob das stimmt, ich gebs einfach mal so weiter) das es wahrscheinlich daran liegt, das ich bei 127.0.0.1 über tcp/ip gehe, bei localhost über einen mysql socket. da aber die scripte den perl interpreter von suse nutzen (#!/usr/bin/perl), wüsste der nicht wo das mysql socket von xampp liegt, weil er ja nach dem suse socket sucht...oder so ähnlich.
wie kann ich das ändern? liegt es überhaupt daran?
könnt ihr mir bei meinem problem helfen?

viele grüße
ein ansonsten begeisterter xampp nutzer

marce
13.12.05, 09:29
schau mal welche Rechte der User, mit dem Du auf die DB gehst hat...

(Tabelle mysql:users) - dort sollte expliziet localhost aufgeführt sein...

BennyB2912
13.12.05, 10:52
hmm...jetzt stellst du mich wieder vor ne aufgabe....:-)

zum einrichten der db habe ich phpmyadmin benutzt und dort ist der user folgendermassen aufgeführt:

Benutzer 'dbo97453078'@'localhost'
Datenbank Rechte Grant Tabellenspezifische Rechte Aktion
db97453078 ALL PRIVILEGES Ja Nein Bearbeiten Entfernen

für die DB die ich benötige steht noch:

Benutzer mit Zugriff auf "db97453078"
Benutzer Host Typ Rechte Grant Aktion
dbo97453078 localhost global ALL PRIVILEGES Ja Bearbeiten
datenbankspezifisch ALL PRIVILEGES Ja Bearbeiten
root linux global ALL PRIVILEGES Ja Bearbeiten
root localhost global ALL PRIVILEGES Ja Bearbeiten


sollte wohl alles seine richtigkeit haben, oder?

marce
13.12.05, 11:07
sieht soweit gut aus... was sagt denn die /etc/my.cnf?

BennyB2912
13.12.05, 13:02
die sagt nicht viel, weil da keine ist. ich benutze xampp lösung von den apachefriends (www.apachefriends.org) und da liegt alles im verzeichnis /opt/lampp. die my.cnf sieht dort so aus:

# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /opt/lampp/var/mysql/mysql.sock

# Here follows entries for some specific programs

# The MySQL server
[mysqld]
port = 3306
socket = /opt/lampp/var/mysql/mysql.sock
skip-locking
set-variable = key_buffer=16M
set-variable = max_allowed_packet=1M
set-variable = table_cache=64
set-variable = sort_buffer=512K
set-variable = net_buffer_length=8K
set-variable = myisam_sort_buffer_size=8M
# log-bin deactivated by default since XAMPP 1.4.11
#log-bin
server-id = 1

# Point the following paths to different dedicated disks
tmpdir = /tmp/
#log-update = /path-to-dedicated-directory/hostname

# Uncomment the following if you are using BDB tables
#set-variable = bdb_cache_size=4M
#set-variable = bdb_max_lock=10000

skip-innodb
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /opt/lampp/var/mysql/
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /opt/lampp/var/mysql/
#innodb_log_arch_dir = /opt/lampp/var/mysql/
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#set-variable = innodb_buffer_pool_size=16M
#set-variable = innodb_additional_mem_pool_size=2M
# Set .._log_file_size to 25 % of buffer pool size
#set-variable = innodb_log_file_size=5M
#set-variable = innodb_log_buffer_size=8M
#innodb_flush_log_at_trx_commit=1
#set-variable = innodb_lock_wait_timeout=50

[mysqldump]
quick
set-variable = max_allowed_packet=16M

[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates

[isamchk]
set-variable = key_buffer=20M
set-variable = sort_buffer=20M
set-variable = read_buffer=2M
set-variable = write_buffer=2M

[myisamchk]
set-variable = key_buffer=20M
set-variable = sort_buffer=20M
set-variable = read_buffer=2M
set-variable = write_buffer=2M

[mysqlhotcopy]
interactive-timeout


und ich glaube dort ist auch die lösung zu suchen. so wie ich das verstanden habe, nutzen die perl scripte der auktionssoftware den perl interpreter von suse, der bei "localhost" über den mysql socket connecten will. diesen mysql socket sucht der interpreter natürlich dort, wo er bei suse normalerweise liegt. da ich aber kein mysql von suse nutze, kann er dort auch nix finden. ich benutze die xampp lösung der apachefriends. dort liegt die mysql db irgendwo in /opt/lampp und dort müsste auch der richtige mysql socket liegen.
wenn man jetzt irgendwie dem suse perl interpreter sagen könnte, wo das richtige mysql socket liegt müsste es doch funktionieren, oder liege ich da mit meinem beschränkten linux wissen falsch?

marce
13.12.05, 13:10
vielleicht findest Du dann unter http://dev.mysql.com/doc/refman/5.0/en/perl.html Hilfe - oder mal in der my.cnf den socket auf den Standard ändern...

... und evtl. den Code mal in Code-Tags einbetten :-) - liesst sich etwas besser hier...