# PDO_MYSQL DSN

(PECL PDO_MYSQL >= 0.1.0)

PDO_MYSQL DSN — Connecting to MySQL databases

### Description

The PDO_MYSQL Data Source Name (DSN) is composed of the following elements:

DSN prefix

  The DSN prefix is `mysql:`.

host

  The hostname on which the database server resides.

port

  The port number where the database server is listening.

dbname

  The name of the database.

unix_socket

  The MySQL Unix socket (shouldn't be used with host or port).

charset

  The character set. See the character set concepts documentation for more information.

  Prior to PHP 5.3.6, this element was silently ignored. The same behaviour can be partly replicated with the `PDO::MYSQL_ATTR_INIT_COMMAND` driver option, as the following example shows.

  Warning

  The method in the below example can only be used with character sets that share the same lower 7 bit representation as ASCII, such as ISO-8859-1 and UTF-8. Users using character sets that have different representations (such as UTF-16 or Big5) must use the charset option provided in PHP 5.3.6 and later versions.

  Example #1 Setting the connection character set to UTF-8 prior to PHP 5.3.6

  `<?php
  $dsn = 'mysql:host=localhost;dbname=testdb';
  $username = 'username';
  $password = 'password';
  $options = array(
  PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
  );
  $dbh = new PDO($dsn, $username, $password, $options);
  ?>`

### Changelog

Version | Description
--- | ---
5.3.6 | Prior to version 5.3.6, charset was ignored.

### Examples

Example #2 PDO_MYSQL DSN examples

The following example shows a PDO_MYSQL DSN for connecting to MySQL databases:

    mysql:host=localhost;dbname=testdb

More complete examples:

    mysql:host=localhost;port=3307;dbname=testdb
    mysql:unix_socket=/tmp/mysql.sock;dbname=testdb

### Notes

> Note: Unix only:

> When the host name is set to "localhost", 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 pdo_mysql.default_socket setting.