4.2.4 Ligação ao Servidor MySQL Utilizando Opções de Comando
Esta secção descreve o uso de opções de linha de comando para especificar como estabelecer ligações ao servidor MySQL, para clientes tais como mysql ou mysqldump. Para informação sobre como estabelecer conexões usando strings de conexão tipo URI ou pares de chaves de valor, para clientes tais como MySQL Shell, ver Secção 4.2.5, “Ligação ao servidor usando strings URI-Like ou pares de chaves de valor”. Para informação adicional se não conseguir ligar-se, ver Secção 6.2.21, “Resolução de Problemas de Ligação ao MySQL”.
Para um programa cliente se ligar ao servidor MySQL, deve utilizar os parâmetros de ligação apropriados, tais como o nome do anfitrião onde o servidor está a correr e o nome de utilizador e palavra-passe da sua conta MySQL. Cada parâmetro de ligação tem um valor por defeito, mas pode anular os valores por defeito conforme necessário, utilizando as opções do programa especificadas quer na linha de comando quer num ficheiro de opções.
Os exemplos aqui apresentados utilizam o programa cliente mysql, mas os princípios aplicam-se a outros clientes tais como mysqldump, mysqladmin, ou mysqlshow.
Este comando invoca mysql sem especificar nenhum parâmetro de ligação explícito:
mysql
Porque não existem opções de parâmetros, os valores por defeito aplicam-se:
-
O nome do anfitrião por defeito é
localhost
. No Unix, isto tem um significado especial, como descrito mais adiante. -
O nome de utilizador por defeito é
ODBC
no Windows ou o seu nome de login Unix no Unix. -
Não é enviada nenhuma palavra-passe porque nem
--password
nem-p
é dada. - p> Para mysql, o primeiro argumento de nãoopção é tomado como o nome da base de dados por defeito. Como não existe tal argumento, o mysql não selecciona nenhuma base de dados predefinida.
Para especificar explicitamente o nome do anfitrião e o nome do utilizador, bem como uma palavra-passe, fornecer as opções apropriadas na linha de comando. Para seleccionar uma base de dados predefinida, adicionar um argumento de nome de base de dados. Exemplos:
mysql --host=localhost --user=myname --password=password mydbmysql -h localhost -u myname -ppassword mydb
Para opções de senha, o valor da senha é opcional:
-
Se utilizar uma opção
--password
ou-p
e especificar um valor de senha, não deve haver espaço entre--password=
ou-p
e a palavra-passe que se lhe segue. -
Se utilizar
--password
ou-p
mas não especificar um valor de senha, o programa cliente pede-lhe para introduzir a senha. A palavra-passe não é mostrada à medida que a introduz. Isto é mais seguro do que dar a palavra-passe na linha de comando, o que pode permitir a outros utilizadores no seu sistema ver a linha da palavra-passe executando um comando como o ps. Ver Secção 6.1.2.1, “Directrizes para a segurança da palavra-passe do utilizador final”. - p> Para especificar explicitamente que não existe palavra-passe e que o programa cliente não deve solicitar uma, use o
--skip-password
opção.
Como acabou de ser mencionado, incluir o valor da palavra-passe na linha de comando é um risco de segurança. Para evitar este risco, especificar a opção --password
ou -p
sem qualquer valor da palavra-passe seguinte:
mysql --host=localhost --user=myname --password mydbmysql -h localhost -u myname -p mydb
Quando a opção --password
ou -p
é dada sem valor de senha, o programa cliente imprime um prompt e espera que o utilizador introduza a senha. (Nestes exemplos, mydb
não é interpretado como palavra-passe porque é separado da opção de palavra-passe anterior por um espaço).
Em alguns sistemas, a rotina da biblioteca que o MySQL utiliza para solicitar uma palavra-passe limita automaticamente a palavra-passe a oito caracteres. Essa limitação é uma propriedade da biblioteca do sistema, não do MySQL. Internamente, o MySQL não tem qualquer limite para o comprimento da palavra-passe. Para contornar a limitação nos sistemas por ela afectados, especifique a sua palavra-passe num ficheiro de opções (ver Secção 4.2.2.2, “Utilização de ficheiros de opções”). Outra solução é alterar a sua palavra-passe MySQL para um valor que tenha oito ou menos caracteres, mas que tenha a desvantagem de as palavras-passe mais curtas tenderem a ser menos seguras.
Programas clientes determinam o tipo de ligação a fazer da seguinte forma:
-
Se o anfitrião não for especificado ou for
localhost
, ocorre uma ligação ao anfitrião local:-
No Windows, o cliente liga-se usando memória partilhada, se o servidor foi iniciado com o
shared_memory
variável de sistema activada para suportar ligações de memória partilhada. -
Em Unix, os programas MySQL tratam o nome do anfitrião
localhost
especialmente, de uma forma provavelmente diferente do que se espera em comparação com outros programas baseados em rede: o cliente liga-se utilizando um ficheiro de socket Unix. A opção--socket
ou aMYSQL_UNIX_PORT
variável de ambiente pode ser usada para especificar o nome do socket.
No Windows, se
host
for.
(período), ou TCP/IP não estiver activado e--socket
não estiver especificado ou o anfitrião estiver vazio, o cliente liga-se usando um tubo nomeado, se o servidor foi iniciado com onamed_pipe
variável de sistema activada para suportar ligações de tubo nomeado. Se as ligações named-pipe não forem suportadas ou se o utilizador que faz a ligação não for um membro do grupo Windows especificado pelonamed_pipe_full_access_group
variável de sistema, ocorre um erro.Caso contrário, a ligação utiliza TCP/IP.
A opção
--protocol
permite utilizar um protocolo de transporte particular mesmo quando outras opções normalmente resultam na utilização de um protocolo diferente. Ou seja,--protocol
especifica explicitamente o protocolo de transporte e anula as regras precedentes, mesmo paralocalhost
.só são utilizadas ou verificadas as opções de ligação que são relevantes para o protocolo de transporte seleccionado. Outras opções de ligação são ignoradas. Por exemplo, com
--host=localhost
no Unix, o cliente tenta ligar-se ao servidor local usando um ficheiro de socket Unix, mesmo que um--port
ou-P
seja dada a opção de especificar um número de porta TCP/IP.Para assegurar que o cliente faz uma ligação TCP/IP ao servidor local, usar
--host
ou-h
para especificar um valor de nome de anfitrião de127.0.0.1
(em vez delocalhost
), ou o endereço IP ou nome do servidor local. Pode também especificar explicitamente o protocolo de transporte, mesmo paralocalhost
, usando a opção--protocol=TCP
. Exemplos:mysql --host=127.0.0.1mysql --protocol=TCP
Se o servidor estiver configurado para aceitar ligações IPv6, os clientes podem ligar-se ao servidor local sobre IPv6 usando
--host=::1
. Ver Secção 5.1.13, “Suporte IPv6”.No Windows, para forçar um cliente MySQL a utilizar uma ligação de tubo nomeado, especificar a opção
--pipe
ou--protocol=PIPE
, ou especificar.
(ponto) como o nome do anfitrião. Se o servidor não foi iniciado com a opçãonamed_pipe
variável de sistema activada para suportar ligações de tubo nomeado ou se o utilizador que faz a ligação não for um membro do grupo Windows especificado pela variável de sistemanamed_pipe_full_access_group
, ocorre um erro. Use a opção--socket
para especificar o nome do tubo se não quiser usar o nome padrão do tubo.Ligações a servidores remotos utilizam TCP/IP. Este comando liga-se ao servidor em execução em
remote.example.com
usando o número de porta por defeito (3306):mysql --host=remote.example.com
Para especificar um número de porta explicitamente, usar a opção
--port
ou-P
:mysql --host=remote.example.com --port=13306
Também pode especificar um número de porta para ligações a um servidor local. No entanto, como indicado anteriormente, as ligações a
localhost
no Unix utilizam um ficheiro socket por defeito, por isso, a menos que force uma ligação TCP/IP como descrito anteriormente, qualquer opção que especifique um número de porta é ignorada.Para este comando, o programa usa um ficheiro socket no Unix e a opção
--port
é ignorada:mysql --port=13306 --host=localhost
Para que o número da porta seja utilizado, forçar uma ligação TCP/IP. Por exemplo, invocar o programa de uma destas maneiras:
mysql --port=13306 --host=127.0.0.1mysql --port=13306 --protocol=TCP
Para informação adicional sobre opções que controlam como os programas clientes estabelecem ligações ao servidor, ver Secção 4.2.3, “Opções de Comando para Ligação ao Servidor”.
É possível especificar parâmetros de ligação sem os introduzir na linha de comando cada vez que se invoca um programa cliente:
-
Especificar os parâmetros de ligação na secção
de um ficheiro de opções. A secção relevante do ficheiro pode parecer-se com esta:
host=host_nameuser=user_namepassword=password
Para mais informações, ver Secção 4.2.2.2, “Utilização de ficheiros de opções”.
-
Alguns parâmetros de ligação podem ser especificados utilizando variáveis de ambiente. Exemplos:
-
Para especificar o hospedeiro para mysql, usar
MYSQL_HOST
. - p> No Windows, para especificar o nome de utilizador MySQL, use
USER
.
Para uma lista de variáveis de ambiente suportadas, ver Secção 4.9, “Variáveis de Ambiente”.
-
-