search
php star Featured

Fix: mysqli_connect(): Access denied error in PHP - Quick Solutions

Quick guide to fix 'mysqli_connect(): Access denied' errors in PHP. Essential fixes with minimal code examples.

person By Gautam Sharma
calendar_today January 8, 2026
schedule 4 min read
PHP MySQL Access Denied Database Connection Code Fixes

The ‘mysqli_connect(): Access denied’ error occurs when PHP cannot connect to MySQL due to incorrect credentials, host, or user permissions. This error prevents database connections.


Common Causes and Fixes

1. Wrong Username/Password

<?php
// ❌ Error: Wrong credentials
$connection = mysqli_connect("localhost", "wronguser", "wrongpass", "database");
?>
<?php
// ✅ Fixed: Correct credentials
$connection = mysqli_connect("localhost", "correctuser", "correctpass", "database");
?>

2. Wrong Host

<?php
// ❌ Error: Wrong host
$connection = mysqli_connect("wronghost", "user", "pass", "database");  // Error!
?>
<?php
// ✅ Fixed: Correct host
$connection = mysqli_connect("localhost", "user", "pass", "database");
// OR
$connection = mysqli_connect("127.0.0.1", "user", "pass", "database");
?>

3. Wrong Database Name

<?php
// ❌ Error: Database doesn't exist
$connection = mysqli_connect("localhost", "user", "pass", "nonexistent_db");  // Error!
?>
<?php
// ✅ Fixed: Correct database name
$connection = mysqli_connect("localhost", "user", "pass", "existing_db");
?>

4. Missing Error Handling

<?php
// ❌ Error: No error checking
$connection = mysqli_connect("localhost", "user", "pass", "database");
$query = mysqli_query($connection, "SELECT * FROM users");  // May fail silently
?>
<?php
// ✅ Fixed: Proper error handling
$connection = mysqli_connect("localhost", "user", "pass", "database");
if (!$connection) {
    die("Connection failed: " . mysqli_connect_error());
}
$query = mysqli_query($connection, "SELECT * FROM users");
?>

5. Port Specification

<?php
// ❌ Error: Wrong port assumed
$connection = mysqli_connect("localhost", "user", "pass", "database");  // Uses default port
?>
<?php
// ✅ Fixed: Specify port if non-standard
$connection = mysqli_connect("localhost:3307", "user", "pass", "database");
// OR
$connection = mysqli_connect("localhost", "user", "pass", "database", 3307);
?>

6. User Permissions

<?php
// ❌ Error: User doesn't have permissions
$connection = mysqli_connect("localhost", "readonly_user", "pass", "database");  // May fail for writes
?>
<?php
// ✅ Fixed: Use user with proper permissions
$connection = mysqli_connect("localhost", "full_access_user", "pass", "database");
?>

7. Using Variables

<?php
// ❌ Error: Undefined variables
$connection = mysqli_connect($host, $username, $password, $database);  // Error!
?>
<?php
// ✅ Fixed: Define variables
$host = "localhost";
$username = "user";
$password = "pass";
$database = "database";
$connection = mysqli_connect($host, $username, $password, $database);
?>

8. Special Characters in Password

<?php
// ❌ Error: Special characters not handled
$password = "pass@word!";  // May cause issues
$connection = mysqli_connect("localhost", "user", $password, "database");
?>
<?php
// ✅ Fixed: Ensure password is properly set
$password = "pass@word!";  // Ensure no encoding issues
$connection = mysqli_connect("localhost", "user", $password, "database");
?>

9. Using MySQLi Object-Oriented Style

<?php
// ❌ Error: No error checking
$mysqli = new mysqli("localhost", "user", "pass", "database");
$query = $mysqli->query("SELECT * FROM users");  // May fail silently
?>
<?php
// ✅ Fixed: Proper error handling
$mysqli = new mysqli("localhost", "user", "pass", "database");
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}
$query = $mysqli->query("SELECT * FROM users");
?>

10. Environment Variables

<?php
// ❌ Error: Environment not set
$connection = mysqli_connect(
    $_ENV['DB_HOST'], 
    $_ENV['DB_USER'], 
    $_ENV['DB_PASS'], 
    $_ENV['DB_NAME']
);  // Error if ENV vars not set
?>
<?php
// ✅ Fixed: Provide defaults
$connection = mysqli_connect(
    $_ENV['DB_HOST'] ?? 'localhost',
    $_ENV['DB_USER'] ?? 'user',
    $_ENV['DB_PASS'] ?? 'pass',
    $_ENV['DB_NAME'] ?? 'database'
);
?>

Quick Debugging Steps

  1. Verify credentials are correct
  2. Check MySQL server is running
  3. Confirm database exists
  4. Test connection with MySQL client
  5. Check user permissions in MySQL
  6. Verify host/port are correct
  7. Use error reporting: mysqli_connect_error()

Prevention Tips

  • Always check connection errors with mysqli_connect_error()
  • Use environment variables for credentials
  • Test database connection separately
  • Verify MySQL server is running
  • Ensure user has proper database permissions
  • Use proper error handling in all database operations
  • Check MySQL configuration for access restrictions

Remember: Verify credentials, host, database name, and user permissions to resolve access denied errors.

Gautam Sharma

About Gautam Sharma

Full-stack developer and tech blogger sharing coding tutorials and best practices

Related Articles

php

How to Fix: MySQL server has gone away error in PHP

Quick guide to fix 'MySQL server has gone away' errors in PHP. Essential fixes with minimal code examples.

January 8, 2026
php

Fix: Call to a member function prepare() on bool error in PHP - Quick Solutions

Quick guide to fix 'Call to a member function prepare() on bool' errors in PHP. Essential fixes with minimal code examples.

January 8, 2026
php

Fix: Duplicate entry for key PRIMARY error in PHP - Quick Solutions

Quick guide to fix 'Duplicate entry for key PRIMARY' errors in PHP. Essential fixes with minimal code examples.

January 8, 2026