mysql_real_connect()
MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)
Descrição
mysql_real_connect()
tenta estabelecer uma conexão mecanismo MariaDB de banco de dados executando em host
. mysql_real_connect()
deve completar com suceeso antes que você possa executar qualquer um das outars funçãoes da API, com a excessão de mysql_get_client_info()
.
Os parâmetros são especificados da seguinte forma:
- O primeiro parâmetro deve ser o endereço de uma estrutura
MariaDB
existente. Antes de chamarmysql_real_connect()
você deve chamarmysql_init()
para inicializar a estruturaMariaDB
. Você pode alterar vária opções de conexão com a chamadamysql_options()
. Leia "mysql_options()
". - O valor de
host
pode ser tanto um nome de máquivo quanto um endereço IP. Sehost
éNULL
ou a string'localhost'
, a conexão é feita na máquina local. Se o SO suporta sockets (Unix) ou named pipes (Windows), eles são utilizados em vez de TCP/IP para a conexão ao servidor. - O parâmetro
user
contém a indetificação do usuário MariaDB. Seuser
éNULL
ou a string vazia''
, considera-se o usuário padrão. Sob Unix, ele é o login atual. Sob ODBC no Windows, o usuário atual deve ser especificado explicitamente. Leia "Como Preencher os Vários Campos no Programa de Administração do ODBC". - O parâmetro
passwd
contém a senha parauser
. Sepasswd
éNULL
, somente entradas na tabelauser
para usuários que tenham campo de senha em branco (vazia) serão verificados ipor um padrão coincidenete. Isto permite que o admistrador do banco de dados configure o sistema de privilégios do MariaDB de tal maneira que usuários os usuários conseguirão privileios diferentes, dependendo se ele espcificou ou não uma senha.Nota: Não tente criptografar a senha antes de chamar
mysql_real_connect()
; senhas criptografadas são tratadas automaticamente pela API cliente. db
é o nome de banco de dados. Sedb
não éNULL
, a conexão definirá o banco de dados padrão com este valor.- Se
port
não é 0, o valor será usado como o número da porta para as conexões TCP/IP. Note que o parâmetrohost
determina o tipo da conexão. - Se
unix_socket
não éNULL
, a string especifica o socket ou named pipe que deve ser usado. Note que o parâmetrohost
determina o tipo de conexão. - O valor de
client_flag
é normalmente 0, mas pode ser definido como uma combinação dos parâmetro seguintes em circunstâncias especiais:Nome do parâmetro Descrição do parâmetro CLIENT_COMPRESS
Usa protocolo compactado. CLIENT_FOUND_ROWS
Retorna o número de linhas encontradas (correspondentes a um padrão), não o número de linha efetivo. CLIENT_IGNORE_SPACE
Permite espaço depois do nome de funções. torna todos os nomes de funções palavras reservadas. CLIENT_INTERACTIVE
Permite interactive_timeout
segundos (no lugar dewait_timeout
segundos) de inatividade antes de fechar a conexão.CLIENT_LOCAL_FILES
Habilita LOAD DATA LOCAL
.CLIENT_MULTI_STATEMENTS
Diz ao servidor que o cliente pode enviar consultas multi linhas (separado com ' ;
'). Se este parâmetro não está definido, consultas de multil linhas está disabilitado. (Novo na versão 4.1).CLIENT_MULTI_RESULTS
Diz ao servidor que o cliente pode tratar multíplos conjuntos de resultados de um multi consulta ou stored procedures. Isto é definido automaticamente se CLIENT_MULTI_STATEMENTS
está lidado. Novo na versão 4.1.CLIENT_NO_SCHEMA
Não permite a sintaxe db_name.nome_tabela.nome_coluna
. Isto é para o ODBC. Ele faz com que o analizador gere um erro se você utilizar aquela sintaxe. É útil para achar erros em alguns programas ODBC.CLIENT_ODBC
O cliente é um cliente ODBC. Torna o mysqld
mais amigável ao ODBC.CLIENT_SSL
Usa SSL (protocolo criptografado). Esta opção não deve ser configuração pelo aplicativo; ele é definida internamente na biblioteca cliente.
Valor Retornado
Um handle de conexão MYSQL*
se a conexão foi obtida corretamente, NULL
se a conexão falhou. Para um conexão estabelecida o valor de retorn é o mesmo que o valor do primeiro parâmetro.
Erros
CR_CONN_HOST_ERROR
Falhou ao conectar ao servidor MySQL.
CR_CONNECTION_ERROR
Falhou ao conectar ao servidor MariaDB local.
CR_IPSOCK_ERROR
Falhou au criar um socket IP.
CR_OUT_OF_MEMORY
Sem memória.
CR_SOCKET_CREATE_ERROR
Falhou ao criar um socket Unix.
CR_UNKNOWN_HOST
Falhou ao procurar o endereço IP para o nome de maquina.
CR_VERSION_ERROR
Um erro de protocolo resultou da tentativa de conexao a um servidor com uma biblioteca cliente que utiliza uma versão de protocolo diferente. Isto pode acontecer se você utiliza uma biblioteca cliente muito antiga para se conectar a um novo servidor qua não foi iniciado com a opção
--old-protocol
.CR_NAMEDPIPEOPEN_ERROR
Falhou ao criar um named pipe no Windows.
CR_NAMEDPIPEWAIT_ERROR
Falhou ao esperar por um named pipe no Windows.
CR_NAMEDPIPESETSTATE_ERROR
Falhou ao conseguir mainpulador do pipe no Windows.
CR_SERVER_LOST
Se
connect_timeout
> 0 e leva mais queconnect_timeout
segundos para conectar ao servidor ou se o servidro foi finalizado ao executar oinit-command
.
Exemplo
MYSQL mysql; mysql_init(&mysql); mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,'seu_programa'); if (!mysql_real_connect(&mysql,'host','user','passwd','database',0,NULL,0)) { fprintf(stderr, 'Failed to connect to database: Error: %s\n', mysql_error(&mysql)); }
Usando mysql_options()
a biblioteca MariaDB irá ler as seções [client]
e [seu_programa]
no arquivo my.cnf
o qual irá assegurar que seu programa irá funcionar, mesmo se alguem tiver configurado o MariaDB de um modo fora do padrão.
Note que sob a conexão, mysql_real_connect()
define o parâmetro reconnect
(parte da estrutura MariaDB
) para um valor de 1
. Este parâmetro indica, no evento em que uma consulta não pode ser realizada devido a perda de conexão, para tentar se reconectar ao servidor antes de esgotar as tentativas.