[ruby]Kann von "extern" nicht auf DB zugreifen!

Dieses Thema: "[ruby]Kann von "extern" nicht auf DB zugreifen!" im Forum "SQL und Datenbanken" wurde erstellt von juan_, 27.01.2008.

  1. juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    976
    Zustimmungen:
    0
    Ort:
    Berlin
    Hoi,


    ich habe folgendes Script, welches mir ganz easy beasy von meinem "Homeserver" nen sql-Datensatz auslesen soll.

    Code:
    require "rubygems"
    require "mysql"
    
    begin
    conn = Mysql.new("192.168.0.181", "xyz", "xyz")
    conn.select_db("musik")
    
    
    rescue Mysql::Error => e
    puts "fehlermeldung: #{e.errno}"
    puts "fehlermeldung: #{e.error}"
    
    end
    
    result = conn.query(
    	"SELECT int_name, cd_titel, cd_jahr
    	 FROM interpreten, cds
    	 WHERE int_nr=cd_interpret"
    )
    
    
    if result.num_rows > 0
    	while line = result.fetch_row
    		printf "'%s' von %s (%i)\n", line[1], line[0], line[2]
    	end
    else
     	puts "Kein Ergebnis gefunden"
    end
    
    
    conn.close
    
    Allerdings kommt die Meldung :
    wenn ich das Script spaßeshalber auf dem Server -mit dem host "localhost" ausführe, dann klappts. Wenn ich dann wieder eine IP-Adresse eintrage, meldet er wieder :
    Muss ich die IP-Adresse noch in irgendeiner Weise initiieren, eigentlich nicht, oder? Ihr eine Variable zuzuweisen und dann diese einzubauen geht auch nicht.

    Die IP-Adresse ist 100%ig richtig, der mysql server läuft auch.


    Bitte um einen kleinen Tipp!

    ciao
     
  2. Anzeige

    Schau dir mal diesen Ratgeber an. Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 sim4000, 27.01.2008
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Schau mal in der Datenbank "mysql" wie die Berechtigungen für den User gesetzt sind.
    Das geht wie folgt:
    Code:
    use mysql;
    select host, user from user;
    Da kommt bei mir folgendes raus:
    Code:
    mysql> use mysql
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> select host, user from user;
    +-----------+------+
    | host      | user |
    +-----------+------+
    | %         | gast |
    | localhost | root |
    +-----------+------+
    2 rows in set (0.03 sec)
    unter Host bedeutet % das alle Computer im Netzwerk Zugriff auf den MySQL-Server mit diesem User haben. Wobei denn localhost heißt, das nur von dem Rechner auf den Server zugegriffen werden kann, wo der Server auch läuft.

    Das wäre die erste Möglichkeit warum es nicht geht. Hast du vielleicht ne Firewall auf dem Rechner laufen, der diesen Port (3306) blockt?
    Poste bitte auch mal die Ausgabe von:
    Code:
    use mysql;
    select host, user from db;
    Lg, sim.
     
  4. juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    976
    Zustimmungen:
    0
    Ort:
    Berlin
    hi,

    Code:
    mysql> use mysql;
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -A
    
    Database changed
    mysql> select host, user from user;
    +-----------+------------------+
    | host      | user             |
    +-----------+------------------+
    | localhost | debian-sys-maint | 
    | localhost | root             | 
    | test0r    | root             | 
    +-----------+------------------+
    3 rows in set (0.00 sec)
    
    allerdings habe ich versucht, die DB von außen erreichbar zu machen, und hab
    mit dem Befehl :
    Code:
    mysql> update user set Host='192.168.0.181';
    
    rumgespielt und mich dabei scheibar ausgesperrt :)

    ich muss erstmal wieder reinkommen, dann melde ich mich :D

    ciao
     
  5. #4 sim4000, 27.01.2008
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Vielleicht hilft die ja das hier:
    Code:
    -[sim4000@kompaktes]-*-[13:56]-*-[2.6.22.13-0.3-default]
    /dev/pts/1 (/srv/www/htdocs/websitev3) mysql_fix_privilege_tables --help
    This script updates all the mysql privilege tables to be usable by
    the current version of MySQL
    
    Got a failure from command:
    cat /usr/share/mysql/mysql_fix_privilege_tables.sql | /usr/bin/mysql --no-defaults --force --user=root --host=localhost --database=mysql
    Please check the above output and try again.
    
    Running the script with the --verbose option may give you some information
    of what went wrong.
    
    If you get an 'Access denied' error, you should run this script again and
    give the MySQL root user password as an argument with the --password= option
    
    :)
     
  6. #5 juan_, 27.01.2008
    Zuletzt bearbeitet: 25.03.2009
    juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    976
    Zustimmungen:
    0
    Ort:
    Berlin
    au. doppelpost. sorry

    //edit:

    häääää, was ist denn hier los... komisch. naja.

    mysql geht wieder wie vorher. kann mich also nicht einloggen!

    dein Skript schmeißt mir auch nur die Fehlermeldung :
    Code:
    
    test0r:/home/juan# mysql -u root -p
    Enter password: 
    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
    
    zu

    ciao

    //edit2
    muh, mysql wiede deinstalliert, installiert. kommt wieder die socketmeldung. was soll das mit denen? hat doch sonst auch immer geklappt...
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    OK, Datenbank läuft wieder, Rechter via

    Code:
    update user set host='%' where user='NAME';
    update db set host='%' where user='NAME';
    
    auf

    Code:
    mysql> select Host, User from user;
    +-----------+------------------+
    | Host      | User             |
    +-----------+------------------+
    | %         | dbuser           | 
    | localhost | debian-sys-maint | 
    | localhost | root             | 
    | test0r    | root             | 
    +-----------+------------------+
    4 rows in set (0.00 sec)
    
    gestzt, aber Ruby führt das externe Skript immer noch nicht aus. Siehe dazu die o.g Fehlermeldung!

    nein, eine Firewall läuft nicht.
    Hier die Ausgabe:
    Code:
    mysql> select host, user from db;
    +------+--------+
    | host | user   |
    +------+--------+
    | %    | dbuser | 
    +------+--------+
    1 row in set (0.17 sec)
    
    Vielen Dank.

    ciao
     
  7. #6 sim4000, 27.01.2008
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Also soweit ich das sehen kann, sieht es von den MySQL-Berechtigungen her alles gut aus.
    Also müsste es an den Script liegen.
    Von Ruby hab ich allerdings keine Ahnung.

    Sry.
     
  8. juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    976
    Zustimmungen:
    0
    Ort:
    Berlin
    Danke soweit.

    Hätte ja sein können, dass man vor der IP-Adresse noch irgendein Zusatz braucht, welcher die IP-Adresse initiiert und nicht Rubyspezifisch ist.
    Naja, muss ja aber daran liegen, lokal funktionierts ja!


    ciao
     
  9. #8 sim4000, 27.01.2008
    sim4000

    sim4000 Lebende Foren Legende

    Dabei seit:
    12.04.2006
    Beiträge:
    1.933
    Zustimmungen:
    0
    Ort:
    In meinem Zimmer
    Solange der MySQL-Server ganz normal auf dem Port 3306 läuft, brauchst du eigentlich keinen zusatz.
    du könntest es noch mal so versuchen:
    Code:
    ip_adresse:3306
    Wobei ich bezweifele, das dass was bringt...
     
  10. #9 juan_, 29.01.2008
    Zuletzt bearbeitet: 30.01.2008
    juan_

    juan_ König

    Dabei seit:
    22.01.2004
    Beiträge:
    976
    Zustimmungen:
    0
    Ort:
    Berlin
    nein, so geht das leider nicht. egal. muss ich mich noch ein bisschen umschauen. vllt ist ja die Syntax bei externem Zugriff anders.

    danke für deine Bemühungen!

    ciao

    //edit:
    Lösung: in der my.cnf Config die bind-adress von "localhost" auf die interne / externe Serveripadresse ändern!
     
Thema:

[ruby]Kann von "extern" nicht auf DB zugreifen!

Die Seite wird geladen...

[ruby]Kann von "extern" nicht auf DB zugreifen! - Ähnliche Themen

  1. Externes Programm mit Script ausführen?

    Externes Programm mit Script ausführen?: Hallo, ich würde gern ein Script zum klonen von festplatten schreiben z.B. mit dem Programm Mondo Rescue. Ist es möglich externen Programmen...
  2. Webserver (über eigene WAN-IP-Adresse) nicht erreichbar - extern möglich

    Webserver (über eigene WAN-IP-Adresse) nicht erreichbar - extern möglich: Hallo zusammen, ich bastel hier gerade an einem Webserver, der über das Internet erreichbar ist. Am DSL-Router hängt jetzt der Webserver an als...
  3. Kurztipp: Eigene externe IP-Adresse herausfinden

    Kurztipp: Eigene externe IP-Adresse herausfinden: Man kann uPNP nutzen, um am eigenen Router die aktuelle externe IP-Adresse abzufragen. Weiterlesen...
  4. Displayport + externer Monitor zeigt bei startx nichts erst bei DVI

    Displayport + externer Monitor zeigt bei startx nichts erst bei DVI: Hallo ich habe auf meinem ThinkPad T420 i5 Intel HD3000 Grafikkarte onboard 16 GB RAM OpenBSD snapshot amd64 ist von märz installiert...
  5. Linux-Treiber für externe Festplatte von Intenso?

    Linux-Treiber für externe Festplatte von Intenso?: Hallo, an Weihnachten hat es jemand gut mit mir gemeint und mir die externe Festplatte Intenso Memory Center 3.5" mit 3TB geschenkt. Unter...