C und Wow-Server



  • Hallo ich hab ein einfaches C-MySQL Programm (C- Von A bis Z) abgetippt und wollte nur eine Verbindung zu einem MySQL Server (Den Server hab ich nicht selber gemacht! Es ist ein ARC_EMU WoW-Server) herstellen aber es kam ein Error:

    Fehler mysql_real_connect(): 1251 (Client does not support authentication protoc
    ol requested by server; consider upgrading MySQL client)

    Jetzt ist meine Frage wie ich ne einfache Verbindung da hinkriege!

    MfG, Andrew

    Das Programm:

    #include <windows.h>
    #include <MySQL\mysql.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <errmsg.h>
    int main(void)
    {
    MYSQL *my;
    unsigned int error;
    
    my = mysql_init(NULL);
    if(my == NULL) {
       fprintf(stderr, "Fehler beim Initialisieren \n");
       exit (EXIT_FAILURE);
    }
    
    if( mysql_real_connect (
                    my,            /* Zeiger auf MYSQL-Handler */
                    "**.**.**.***", /* Host-Name */
                    "******", /* User-Name */
                    "*******",  /* Passwort für user_name */
                    "wowserver",   /* Name der Datenbank */
                    0,             /* Port (default=0) */
                    NULL,          /* Socket (default=NULL) */
                    0              /* keine Flags */  )  == NULL)
    error = mysql_errno(my);
    if( error == CR_CONN_HOST_ERROR )
       printf("Keine Verbindung zu Host\n");
    printf ( "Fehler mysql_real_connect(): %u (%s)\n",
      mysql_errno (my), mysql_error (my));
    
      system("PAUSE");	
      return 0;
    }
    


  • ist das Bsp wirklich komplett ?

    schau mal hier bei "Example"
    http://dev.mysql.com/doc/refman/5.1/en/mysql-real-connect.html

    da wird noch mysql_options vorher aufgerufen.

    [Zitat]
    Remember options specified by calls to mysql_options(). Without this option,
    if mysql_real_connect() fails, you must repeat the mysql_options() calls
    before trying to connect again. With this option, the mysql_options() calls
    need not be repeated.
    [/Zitat]

    Viel Erfolg !



  • Mh ich wüsste nicht was ich da einsetzten soll, aber ich hab einfach mal

    MYSQL_OPT_NAMED_PIPE

    eingesetzt und jetzt kommt der Error:

    2013 (Lost connection to MySQL server during query)



  • hm, anhand Deiner ersten Meldung solltest Du in Richtung Protokoll suchen

    Es gibt 4.0, 4.1, 5.0 ? Lange (neu) und kurze (alt) Passwörter und vll. noch mehr Unterschiede.

    MYSQL_OPT_PROTOCOL, wie ich gerade sehe ist es das aber auch nicht 😞

    Vll. solltest Dir doch einfach nur mal eine aktuelle mysql.lib besorgen ?



  • mhh, ich glaub nicht das es an der libmysql.lib liegt, ich sie vor einer Woche gedownloadet....



  • Andrew3726 schrieb:

    ich glaub nicht das es an der libmysql.lib liegt, ich sie vor einer Woche gedownloadet....

    Du hättest jetzt natürlich auch die Version der Bibliothek prüfen können, aber wenn du es mit Glauben versuchen willst, bist du vielleicht auf einem kirchlich orientierten Board besser aufgehoben 😉



  • naja da steht 27.6...

    //edit: Version 2 steht bei der COPYING-Datei



  • Andrew3726 schrieb:

    naja da steht 27.6...

    Wo "da"?



  • version 2 der gnu lizenz sicher *hüstel*

    dann schreib doch mal den link hier rein von dem, von Dir, verwendeten
    Download und zwar so das man die Version runterladen kann welche auch
    Du hast und zwar ohne rumzueiern oder Weiterleitungen 🙂

    Am besten Du installierst Dir mal einen aktuellen Server da ist die lib
    auch mit enthalten eigentlich.



  • wie soll ich den den server neu installieren das is ja nicht meiner



  • lokal meister ! lokal ! 😉



  • was bedeutet das?



  • Ich denke er empfiehlt dir erstmal lokal (auf deinem Rechner) einen Mysql Server zu installieren und damit zu testen, um auszuschließen, dass das Problem nicht woanders liegt.

    Viele Mysql Server sind zudem auch so konfiguriert, dass man von Außerhalb gar nicht auf sie verbinden kann.



  • ich kann ja per navicat mit dem server verbinden



  • vll. weil navicat die passende libmysql eingebunden hat !

    Um welche Version des MySQL-Servers handelt es sich denn überhaupt ?
    Das ist zwar nicht ganz so wichtig aber interessant wäre es schon.

    Hast Du diese libmysql-6.0.1 geladen ?
    http://dev.mysql.com/downloads/connector/c/6.0.html

    Oder stammt Deine Version "2" 😉 aus verstaubten Archiven ?

    Eine mögliche Ausgabe könnte sein:
    MySQL Client Version is 6.0.0
    MySQL Server Version is 5.051-pro

    #include <winsock2.h>
    #include <mysql/mysql.h>
    #pragma comment(lib, "libmysql.lib")
    void mysql_test()
    {
    	MYSQL mysql;
    	if( mysql_init(&mysql) != NULL ) {
    		printf("MySQL Client Version is %s\n",mysql_get_client_info());
    		if( NULL != mysql_real_connect(&mysql, "localhost", "my_name", "my_pass", "my_db", 3306, "mysql.sock", 0) {
    			printf("MySQL Server Version is %s\n",mysql_get_server_info(&mysql));
    			mysql_close(&mysql);
    		}
    	}
    }
    

    Eine Mögliche Fehlerursache könnte noch sein, der Server erwartet eine
    verschlüsselte Verbindung. So ein Fall habe ich auch zur Hand, nur weiß
    jetzt nicht ob nicht eine andere Fehlermeldung als bei Dir kommt, wenn
    die Verbindung nicht verschlüsselt ist.

    Viel Erfolg ! RB



  • MYSQL mysql;
        if( mysql_init(&mysql) != NULL ) {
            printf("MySQL Client Version is %s\n",mysql_get_client_info());
            if(  mysql_real_connect(&mysql, "*.**.**.***",
                    "*******", 
                    "****", 
                    "**", 0, NULL, 0) ==NULL)
                    {
                printf("MySQL Server Version is %s\n",mysql_get_server_info(&mysql));
    
                }
            system("pause");
        } 
                    mysql_close(&mysql);
    

    so hab ichs jetz gemacht und die ausgabe:

    MySQL Client Version is 4.0.16
    MySQL Server Version is 5.0.51a-community-nt



  • der Server ist ok, aber die Clientversion ist 4.xxx
    aktuell ist 6.xxx, zumindest die wo man runterladen
    kann bei mysql.com



  • Endlich hab ich es geschafft!
    Naja es gibt jedenfalls kein error.
    Danke euch allen dass ihr mir so super geholfen habt!

    🙂

    Mfg, Andrew


Anmelden zum Antworten