MySQL on Localhost

MySQL is the world's most popular open-source relational database. When running locally, MySQL listens on localhost:3306 by default. It's included in XAMPP, MAMP, WAMP, and can be installed standalone or via Docker.

Access MySQL: phpMyAdmin

Default Credentials

StackUsernamePasswordHost
XAMPProot(blank)localhost
MAMProotrootlocalhost
WAMProot(blank)localhost
Laragonroot(blank)localhost
Docker (official)rootSet via env varlocalhost
MySQL InstallerrootSet during installlocalhost

Ways to Access MySQL

1. phpMyAdmin (Web Interface)

The easiest way for beginners — included with XAMPP, MAMP, WAMP:

2. MySQL Command Line

# Connect to MySQL
mysql -u root -p

# Connect with password inline (not recommended)
mysql -u root -pYourPassword

# Connect to specific database
mysql -u root -p mydatabase

# Execute SQL file
mysql -u root -p mydatabase < backup.sql

3. MySQL Workbench (GUI)

Official MySQL GUI tool — download from mysql.com:

  1. Download MySQL Workbench
  2. Click + to add new connection
  3. Connection Name: Local MySQL
  4. Hostname: 127.0.0.1
  5. Port: 3306
  6. Username: root
  7. Click Test Connection

4. Code Connection

PHP (mysqli)

$conn = new mysqli("localhost", "root", "", "mydatabase");
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";

PHP (PDO)

try {
    $pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "root", "");
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

Node.js

const mysql = require('mysql2');
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database: 'mydatabase'
});
connection.connect();

Python

import mysql.connector
conn = mysql.connector.connect(
    host="localhost",
    user="root",
    password="",
    database="mydatabase"
)

Common MySQL Commands

# Show all databases
SHOW DATABASES;

# Create database
CREATE DATABASE mydatabase;

# Use database
USE mydatabase;

# Show tables
SHOW TABLES;

# Create table
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100) UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

# Insert data
INSERT INTO users (name, email) VALUES ('John', 'john@example.com');

# Select data
SELECT * FROM users;

# Create user
CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'newuser'@'localhost';
FLUSH PRIVILEGES;

Start/Stop MySQL

XAMPP

Use XAMPP Control Panel → Start/Stop MySQL

Windows (Standalone)

# Start MySQL service
net start mysql

# Stop MySQL service
net stop mysql

Mac (Homebrew)

brew services start mysql
brew services stop mysql
brew services restart mysql

Linux

sudo systemctl start mysql
sudo systemctl stop mysql
sudo systemctl restart mysql
sudo systemctl status mysql

MySQL Configuration

OS/StackConfig File Location
XAMPP (Windows)C:\xampp\mysql\bin\my.ini
XAMPP (Mac)/Applications/XAMPP/xamppfiles/etc/my.cnf
MAMP/Applications/MAMP/conf/my.cnf
Linux/etc/mysql/my.cnf or /etc/my.cnf
WindowsC:\ProgramData\MySQL\MySQL Server X.X\my.ini

Troubleshooting

ProblemSolution
Can't connect to MySQL serverStart MySQL service in XAMPP/MAMP
Access denied for user 'root'Check password, try blank password
Port 3306 already in useStop other MySQL instance or change port
MySQL shutdown unexpectedlyCheck error log, often port conflict
Connection refusedMySQL not running or firewall blocking
Can't create databaseCheck user permissions

Reset Root Password

# Stop MySQL
# Start MySQL with skip-grant-tables
mysqld --skip-grant-tables

# In another terminal
mysql -u root

# Reset password
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

# Restart MySQL normally

Backup & Restore

# Backup database
mysqldump -u root -p mydatabase > backup.sql

# Backup all databases
mysqldump -u root -p --all-databases > all_backup.sql

# Restore database
mysql -u root -p mydatabase < backup.sql