No MySQL 3.23.49 e MySQL 4.0.2 (4.0.13 no Windows), adicionamos
algumas novas opções para lidar com possíveis detalhes de
segurança junto ao LOAD DATA LOCAL
.
Exstem dois problemas possíveis com o suporte a este comando:
Como a leitura deste arquivo é iniciada por um servidor, pode-se teoricamente criar um servidor MySQL corrigido que poderia ler qualquer arquivo na máquina cliente na qual o usuário atual tenha acesso, quando o cliente envia uma consulta a tabela.
Em um ambiente web onde os clientes estão conectados a um
servidor web, um usuário poderia usar LOAD DATA
LOCAL
para ler qualquer arquivo no qual o processo do
servidor web tenha acesso de leitura (assumindo que um usuário
poderia executar qualquer comando no servidor SQL).
Existem dois arquivos separados para isto:
Se você não configurar o MySQL com
--enable-local-infile
, então LOAD
DATA LOCAL
será disabilitado por todos os clientes, a
menos que se chame mysql_options(...
MYSQL_OPT_LOCAL_INFILE, 0)
no cliente. See
Secção 12.1.3.40, “mysql_options()
”.
Para o cliente de linha de comando mysql
,
LOAD DATA LOCAL
pode ser habilitado
especificado a opção --local-infile[=1]
, ou
disabilitando com --local-infile=0
.
Por padrão, todos os clientes e bibliotacas MySQL são
compilados com --enable-local-infile
, para ser
compatível com o MySQL 3.23.48 e anterior.
Pode se desabilitar todos os comandos LOAD DATA
LOCAL
no servidor MySQL iniciando o
mysqld
com --local-infile=0
.
No caso em que LOAD DATA LOCAL INFILE
está
disabilitado no servidor ou no cliente, você receberá a
seguinte mensagem de erro (1148):
The used command is not allowed with this MySQL version
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.