URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID1
Нить номер: 62116
[ Назад ]

Исходное сообщение
"проблема с доступов в MySQL 5.1"

Отправлено roman , 25-Ноя-05 05:54 
Приветствую.

На свежеустановленном Mysql при попытке соединения к базе из своего приложения (которое ранее успешно работало с mysql-4.x) (grant privileges дадены) такая ошибка:

mysql_real_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client

Из приложения вызывается функция mysql_real_connect(), в параметрах которй пользовательский ID, пароль, имя базы.

Возможно, что-то нужно подкрутить в настройках mysql?

Заранее благодарю!


Содержание

Сообщения в этом обсуждении
"проблема с доступов в MySQL 5.1"
Отправлено Wizard , 25-Ноя-05 06:18 
Пересобрать библиотечку надо которой пользуется твой клиент. Ибо автоматом подмены не будет номера версий совсем не те.
Если эту сторону вопроса проверил. Ну тогда давай доп. инфу.

"проблема с доступов в MySQL 5.1"
Отправлено roman , 25-Ноя-05 07:28 
>Пересобрать библиотечку надо которой пользуется твой клиент. Ибо автоматом подмены не будет
>номера версий совсем не те.
>Если эту сторону вопроса проверил. Ну тогда давай доп. инфу.
я предполагал, что должна быть совместимость библиотек?
Проверю, спасибо за совет.

"проблема с доступов в MySQL 5.1"
Отправлено aliv , 25-Ноя-05 09:44 
сервер и клиент должны быть одной версии.
у Вас видимо mysql-server 5.1
а mysql-client 4
переставте клиента и все

"проблема с доступов в MySQL 5.1"
Отправлено roman , 25-Ноя-05 16:01 
>сервер и клиент должны быть одной версии.
>у Вас видимо mysql-server 5.1
>а mysql-client 4
>переставте клиента и все
с нумерацией все в порядке - и клиент и сервер одной версии.

"проблема с доступов в MySQL 5.1"
Отправлено Lancelot , 25-Ноя-05 19:56 
http://dev.mysql.com/doc/refman/5.0/en/mysql-real-connect.html
обратите внимание на опцию "--old-protocol" демона mysqld возможно она Вам поможет.


"проблема с доступов в MySQL 5.1"
Отправлено roman , 26-Ноя-05 06:17 
Приветствую.

Больше спасибо за ответы, в результате исследований выяснил, что проблема скорее всего не в MySQL, а где-то в недрах языка С :)

#define MSGLEN    32
#define BUFFLEN 1024

int db_init(MYSQL *Conn)
{
    MYSQL *c;

    c = malloc(sizeof(MYSQL));
    if ( c == NULL )
        return 0;

    memcpy(c, Conn, sizeof(MYSQL));
    /* initialize the connection object here */
    if ( mysql_init(Conn) == NULL ) {
        free(c);
        return FAIL;
    }    
  
    /* connect main database here */
    if( !mysql_real_connect(Conn, c->host, c->user, c->passwd, c->db, 0, NULL, 0) ) {
        free(c);
        return DB_DOWN;
    }

    /* select database */
    if( mysql_select_db(Conn, c->db) ) {
        free(c);
        return FAIL;
    }
    free(c);
    return SUCCESS;
}

typedef struct msg_s {
    unsigned char msg_flag;
        unsigned char msg_type;
        unsigned char msg_rc;           /* reply code */
        char msg_id[MSGLEN];
        char msg_passwd[MSGLEN];
        char msg_fqdn[MSGLEN];
        char msg_ipaddr[MSGLEN];
    char msg_serialno[MSGLEN];
} msg_t;

msg_t *msg, *msg2;
MYSQL conn;
...
msg = malloc( sizeof(msg_t) );
msg2 = malloc( sizeof(msg_t) );
if ( !msg || !msg2 ) {
  /* error message */
  exit(EXIT_FAILURE);
}

/* здесь вызывается функция, получающая из сети сообщение содержащее данные типа структуры msg_t. Данные приходят верные, проверено */

/* сохраним копию буфера */
memcpy(msg2, msg, sizeof(msg_t));

/* готовимся к инициализации MySQL */
conn.host = "192.168.11.22";
conn.user = "user";
conn.passwd = "pass";
conn.db = "userdb";

if ( db_init(&conn) != SUCCESS ) {
  /* error message */
  ...
}

И вот уже здесь, на этом этапе, независимо от успеха-удачи функции db_init() указатель msg и msg2 указывают на адрес 0x00! Дальнейшая работа с этим указателем приводит к segmentation fault.

Почему так происходит, может ли кто подсказать по имеющейся информации?
Заранее благодарю.


"проблема с доступов в MySQL 5.1"
Отправлено ram_scan , 26-Ноя-05 09:58 
>Заранее благодарю!

Браза, ну есть же гугель и mysql.com в конце-концов...
http://dev.mysql.com/doc/refman/5.0/en/old-client.html


"проблема с доступов в MySQL 5.1"
Отправлено roman , 26-Ноя-05 10:38 
>>Заранее благодарю!
>
>Браза, ну есть же гугель и mysql.com в конце-концов...
>http://dev.mysql.com/doc/refman/5.0/en/old-client.html
Разобрался, проблема решена.
Спасибо за участие ;)