Introducción
PDO_MYSQL es un controlador que implementa la interfaz de PHP Data Objects (PDO) para
permitir el acceso de PHP a las bases de datos MySQL.
PDO_MYSQL utiliza consultas preparadas emuladas por omisión.
MySQL 8
Si PHP se utiliza en una versión 7.1 anterior a la versión 7.1.16, o PHP 7.2 anterior a 7.2.4,
el complemento de contraseña debe establecerse en
mysql_native_password para MySQL 8 Server, ya que de lo contrario pueden aparecer
errores similares a The server requested authentication method
unknown to the client [caching_sha2_password],
incluso si caching_sha2_password no se utiliza.
Esto se debe a que MySQL 8 utiliza por omisión caching_sha2_password,
un complemento que no es reconocido por las versiones antiguas de PHP (mysqlnd).
En su lugar, debe modificarse el parámetro
default_authentication_plugin=mysql_native_password
en
my.cnf. El complemento caching_sha2_password
es completamente soportado a partir de PHP 7.4.4. Para versiones anteriores,
la extensión mysql_xdevapi lo soporta.
Advertencia
Tenga en cuenta: ciertos tipos de tablas MySQL (motor de registro)
no soportan transacciones. Cuando se escribe código de base de datos
transaccional utilizando un tipo de tabla que no soporta transacciones,
MySQL afirmará que una transacción fue iniciada correctamente. Además,
cualquier consulta DLL publicada enviará implícitamente todas las transacciones pendientes.
Nota:
El controlador MySQL no soporta adecuadamente PDO::PARAM_INPUT_OUTPUT
a través de PDOStatement::bindParam(); aunque tales
parámetros pueden ser utilizados, no serán actualizados
(es decir, la salida actual es ignorada).
Instalación
Las distribuciones Linux incluyen versiones binarias de PHP que pueden
ser instaladas. Incluso si estos binarios son construidos con las extensiones
MySQL, las bibliotecas clientes deben ser a menudo instaladas mediante un paquete adicional. Verifique si es el caso para su distribución.
Por ejemplo, en Ubuntu el paquete php5-mysql
instala las
extensiones PHP ext/mysql, ext/mysqli, y pdo_mysql. En CentOS, el paquete
php-mysql
también instala estas tres extensiones PHP.
Alternativamente, puede compilar esta extensión usted mismo. Construir
PHP desde las fuentes permite especificar las extensiones MySQL a incluir,
así como las bibliotecas clientes de cada extensión.
Durante la compilación utilice --with-pdo-mysql[=DIR]
para instalar la extensión PDO MySQL, donde [=DIR]
es la ruta
de la biblioteca base de MySQL.
Mysqlnd y la biblioteca por defecto.
Para más detalles sobre la elección de la biblioteca, ver
Elegir una biblioteca MySQL.
Opcionalmente, la opción --with-mysql-sock[=DIR]
define la ruta hacia el socket Unix MySQL para todas las extensiones
MySQL, incluyendo PDO_MYSQL. Si no se especifica, se utilizarán las rutas por defecto.
Opcionalmente, la opción --with-zlib-dir[=DIR]
será utilizada para definir el prefijo de instalación zlib.
$ ./configure --with-pdo-mysql --with-mysql-sock=/var/mysql/mysql.sock
El soporte SSL es activado utilizando las constantes
Pdo\Mysql::ATTR_SSL_*
,
lo cual equivale a llamar a la función API C
» mysql_ssl_set().
Además, SSL no puede ser activado con PDO::setAttribute()
ya que la conexión ya existe.
Ver también la documentación MySQL sobre
» la conexión a MySQL con SSL.
Configuración en tiempo de ejecución
El comportamiento de estas funciones es
afectado por la configuración en el archivo php.ini.
Para más detalles sobre los modos INI_*,
refiérase a
Dónde una directiva de configuración puede ser modificada.
Aquí hay una aclaración sobre
el uso de las directivas de configuración.
-
pdo_mysql.default_socket
string
-
Se define un socket de dominio Unix. El valor puede ser también definido
en el momento de la compilación si se encuentra un socket de dominio Unix
durante la configuración. Esta configuración INI solo está disponible
bajo Unix.
-
pdo_mysql.debug
bool
-
Se activa el depurado para el driver PDO_MYSQL. Esta configuración solo
está disponible cuando el driver PDO_MYSQL es compilado con mysqlnd
y en modo de depurado PDO.