Introdução
PDO_MYSQL é um driver que implementa a interface PHP
Data Objects (PDO)
para habilitar o acesso do PHP aos bancos de dados MySQL.
PDO_MYSQL utiliza as preparações emuladas por padrão.
MySQL 8
Ao executar uma versão de PHP anterior a 7.1.16, ou 7.2.4, defina
o plugin padrão de senhas do Servidor MySQL 8 para mysql_native_password
ou poderão surgir erros similares a
The server requested authentication method unknown to the client [caching_sha2_password]
mesmo quando caching_sha2_password não seja usado.
Isto acontece porque o padrão do MySQL 8 é caching_sha2_password, um plugin que não
é reconhecido pelas versões antigas do PHP (mysqlnd). Portanto, altere o plugin
configurando default_authentication_plugin=mysql_native_password
no arquivo my.cnf. O plugin caching_sha2_password
é totalmente suportado a partir do PHP 7.4.4. Para versões anteriores do PHP, a extensão
mysql_xdevapi suporta
o plugin.
Aviso
Cuidado: Alguns tipos de tabelas do MySQL (motores de armazenamento) não suportam transações. Ao
escrever código para um banco de dados transacional onde o tipo de tabela não suporta
transações, o MySQL irá entender que a transação foi inicializada com sucesso.
Além disso, qualquer consulta DDL irá, de forma implícita,
executar o "commit" para qualquer transação que esteja pendente.
Nota:
O driver MySQL não suporta adequadamente a opção PDO::PARAM_INPUT_OUTPUT
através de PDOStatement::bindParam(); embora tais parâmetros possam ser usados,
eles não são atualizados (isto é, a saída real é ignorada).
Instalação
As distribuições Unix comuns incluem versões binárias do PHP que podem
ser instaladas. Embora estas versões binárias são tipicamente compiladas com
suporte a extensões MySQL, as bibliotecas das extensões
em si podem precisar ser instaladas usando um pacote adicional. Verifique
o gerenciador de pacote que vem com a distribuição sendo usada para
disponibilidade desse pacote.
Por exemplo, no Ubuntu o pacote php5-mysql
instala
as extensões PHP ext/mysql, ext/mysqli e PDO_MYSQL. No CentOS,
o pacote php-mysql
também instala estas três
extensões.
Alternativamente, o usuário pode compilar esta extensão por conta própria. Compilar o PHP
direto da fonte permite especificar as extensões a serem utilizadas, assim como
as bibliotecas clientes para cada extensão.
Ao compilar, use a opção --with-pdo-mysql[=DIR] para instalar
a extensão PDO MySQL, onde o [=DIR]
opcional
é a localização da biblioteca base do MySQL. Mysqlnd
é a biblioteca principal. Para detalher sobre a escolha de biblioteca, consulte a seção
Escolhendo uma biblioteca MySQL.
Opcionalmente, --with-mysql-sock[=DIR] define a localização
do ponteiro do soquete Unix MySQL para todas as extensões MySQL, incluindo a PDO_MYSQL. Se
não especificada, as localizações padrão são pesquisadas.
Optionalmente, --with-zlib-dir[=DIR] é usada para definir
o caminho da instalação da zlib.
$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
O suporte a SSL pode ser habilitado usando as constantes PDO_MySQL apropriadas,
que é o equivalente a chamar a » função mysql_ssl_set() da API C do MySQL.
Além disso, o SSL não pode ser habilitado com PDO::setAttribute porque a conexão
já existirá. Consulte também a documentação do MySQL sobre » conexão ao
MySQL com SSL.
Configurações em Execução
O comportamento destas funções é afetado pelas configurações do php.ini.
Para mais detalhes e definições dos modos
INI_*, consulte os
Onde uma configuração deve ser definida.
Aqui está uma breve explicação das
diretivas de configuração.
-
pdo_mysql.default_socket
string
-
Define um soquete de domínio Unix. Este valor também pode ser definido no momento da compilação se
um soquete de domínio puder ser encontrado durante o comando "configure". Esta configuração ini é apenas para sistemas baseados em Unix.
-
pdo_mysql.debug
bool
-
Habilita a depuração para o PDO_MYSQL. Esta configuração está disponível somente quando o PDO_MYSQL tiver
sido compilado com a mysqlnd e em modo de depuração PDO.