<?xml version="1.0" encoding="utf-8"?> <!-- $Revision$ --> <reference xml:id="ref.pdo-mysql" xmlns="http://docbook.org/ns/docbook"> <?phpdoc extension-membership="bundledexternal" ?> <title>MySQL Functions (PDO_MYSQL)</title> <titleabbrev>MySQL (PDO)</titleabbrev> <partintro> <section xml:id="pdo-mysql.intro"> &reftitle.intro; <para> PDO_MYSQL is a driver that implements the <link linkend="intro.pdo">PHP Data Objects (PDO) interface</link> to enable access from PHP to MySQL databases. </para> <para> PDO_MYSQL uses emulated prepares by default. </para> <para> <emphasis role="bold">MySQL 8</emphasis> </para> <para> When running a PHP version before 7.1.16, or PHP 7.2 before 7.2.4, set MySQL 8 Server's default password plugin to <emphasis>mysql_native_password</emphasis> or else you will see errors similar to <emphasis>The server requested authentication method unknown to the client [caching_sha2_password]</emphasis> even when <emphasis>caching_sha2_password</emphasis> is not used. </para> <para> This is because MySQL 8 defaults to caching_sha2_password, a plugin that is not recognized by the older PHP (mysqlnd) releases. Instead, change it by setting <literal>default_authentication_plugin=mysql_native_password</literal> in <filename>my.cnf</filename>. The <emphasis>caching_sha2_password</emphasis> plugin will be supported in a future PHP release. In the meantime, the <link linkend="book.mysql-xdevapi">mysql_xdevapi</link> extension does support it. </para> <warning> <para> Beware: Some MySQL table types (storage engines) do not support transactions. When writing transactional database code using a table type that does not support transactions, MySQL will pretend that a transaction was initiated successfully. In addition, any DDL queries issued will implicitly commit any pending transactions. </para> </warning> </section> &reference.pdo-mysql.configure; &reference.pdo-mysql.constants; &reference.pdo-mysql.ini; </partintro> <refentry xml:id="ref.pdo-mysql.connection"> <refnamediv> <refname>PDO_MYSQL DSN</refname> <refpurpose>Connecting to MySQL databases</refpurpose> </refnamediv> <refsect1 role="description"> &reftitle.description; <para> The PDO_MYSQL Data Source Name (DSN) is composed of the following elements: <variablelist> <varlistentry> <term>DSN prefix</term> <listitem> <para> The DSN prefix is <userinput>mysql:</userinput>. </para> </listitem> </varlistentry> <varlistentry> <term><literal>host</literal></term> <listitem> <para> The hostname on which the database server resides. </para> </listitem> </varlistentry> <varlistentry> <term><literal>port</literal></term> <listitem> <para> The port number where the database server is listening. </para> </listitem> </varlistentry> <varlistentry> <term><literal>dbname</literal></term> <listitem> <para> The name of the database. </para> </listitem> </varlistentry> <varlistentry> <term><literal>unix_socket</literal></term> <listitem> <para> The MySQL Unix socket (shouldn't be used with <literal>host</literal> or <literal>port</literal>). </para> </listitem> </varlistentry> <varlistentry> <term><literal>charset</literal></term> <listitem> <para> The character set. See the <link linkend="mysqlinfo.concepts.charset">character set</link> concepts documentation for more information. </para> </listitem> </varlistentry> </variablelist> </para> </refsect1> <refsect1 role="examples"> &reftitle.examples; <para> <example> <title>PDO_MYSQL DSN examples</title> <para> The following example shows a PDO_MYSQL DSN for connecting to MySQL databases: <programlisting> <![CDATA[ mysql:host=localhost;dbname=testdb ]]> </programlisting> More complete examples: <programlisting> <![CDATA[ mysql:host=localhost;port=3307;dbname=testdb mysql:unix_socket=/tmp/mysql.sock;dbname=testdb ]]> </programlisting> </para> </example> </para> </refsect1> <refsect1 role="notes"> &reftitle.notes; <note> <title>Unix only:</title> <para> When the host name is set to <literal>"localhost"</literal>, then the connection to the server is made thru a domain socket. If PDO_MYSQL is compiled against libmysqlclient then the location of the socket file is at libmysqlclient's compiled in location. If PDO_MYSQL is compiled against mysqlnd a default socket can be set thru the <link linkend="ini.pdo-mysql.default-socket"> pdo_mysql.default_socket</link> setting. </para> </note> </refsect1> </refentry> </reference> <!-- Keep this comment at the end of the file Local variables: mode: sgml sgml-omittag:t sgml-shorttag:t sgml-minimize-attributes:nil sgml-always-quote-attributes:t sgml-indent-step:1 sgml-indent-data:t indent-tabs-mode:nil sgml-parent-document:nil sgml-default-dtd-file:"~/.phpdoc/manual.ced" sgml-exposed-tags:nil sgml-local-catalogs:nil sgml-local-ecat-files:nil End: vim600: syn=xml fen fdm=syntax fdl=2 si vim: et tw=78 syn=sgml vi: ts=1 sw=1 -->