Why can't I connect to my MySQL database from PHP?


  • Applies to: Grid
    • Difficulty: Medium
    • Time: 30
    • Tools needed: AccountCenter access, FTP
  • Applies to: All DV
    • Difficulty: Medium
    • Time: 30
    • Tools needed: Plesk administrator access, FTP

Overview

This article contains the basic information you need to connect from PHP to your MySQL database on your (mt) Media Temple service. The most common mistake is in the host name, so check there first:

  • Grid: internal-db.s00000.gridserver.com
  • DV servers: localhost

NOTE:

Do not use your domain name or IP address as the host name. This can result in an unreliable database server connection.

Requirements

Before you start, you'll need the following:

  • Host: internal-db.s00000.gridserver.comlocalhost
  • Username: db00000 or db00000_usernameSet in Plesk.
  • Password: Your password.
  • Database: Your database name. This should look like db00000_dbname.

You can see a summary of all these settings which are specific for your own server in the AccountCenter, under the Server GuideServer Guide.

Instructions

The host is based on your access domain. You may have to check the advanced section of your database settings to be able to specify this. For external connections, use external-db.s00000.gridserver.com instead and make sure your IP address has been added to the list of allowed external IPs. Click here for details.

For DV servers, localhost is the default host in most scripts and applications. You likely won't have to enter anything special for this parameter.

The default username with access to all of your databases is db followed by your site number, db00000. You can edit your database user password in the AccountCenter. See Database users on the Grid for instructions on updating passwords and adding database users. If you want to test your username and password, try logging into phpMyAdmin.

This article has instructions for adding a database with a username and password.

CAUTION:

If you update the password for an existing database user, you must update it in any files or applications that use the old password. If you're not sure how to do this, you may want to create a new database user for your current project. The new database user will have the format db00000_username.

Your database name will be of the format db00000_dbname. You must create the database through the AccountCenter first. See How do I create a database? if you need to create your database.

Sample connection script

Below is a sample PHP connection script which shows three different methods of connecting to MySQL. This script is adapted from the PHP manual page "Choosing an API." Be sure to replace the arguments with your own MySQL login credentials.

CAUTION:

As of PHP 5.5.0, mysql_connect() is deprecated and will be removed in the future. You will want to look into using mysqli or PDO.

Filename: mysql_connect.php


<?php
// mysqli
$mysqli = new mysqli("internal-db.s00000.gridserver.com", "db00000_username", "password", "db00000_dbname");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// PDO
$pdo = new PDO('mysql:host=internal-db.s00000.gridserver.com;dbname=db00000_dbname', 'db00000_username', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);

// mysql
$c = mysql_connect("internal-db.s00000.gridserver.com", "db00000_username", "password");
mysql_select_db("db00000_dbname");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);

?>

<?php
// mysqli
$mysqli = new mysqli("localhost", "user", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// PDO
$pdo = new PDO('mysql:host=localhost;dbname=database', 'user', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);

// mysql
$c = mysql_connect("localhost", "user", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>

Resources

For more information regarding MySQL connections via PHP, please consult the help documentation released with your script or visit php.net.