No articles found
Try different keywords or browse our categories
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.
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
- Verify credentials are correct
- Check MySQL server is running
- Confirm database exists
- Test connection with MySQL client
- Check user permissions in MySQL
- Verify host/port are correct
- 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.
Related Articles
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.
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.
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.