AWS EC2 & RDS

ssh -i ".pem" <user@public IP>
mysql -h <rds endpoint> -u <username> -p

MySQL Cheat Sheet

Can be used as payloads for SQL injection

# Access terminal
$ mysql -u [username] -p (prompt password)

# Logout
$ MySQL> exit;
# SHOW databases
$ MySQL> show databases;

# CREATE databases
$ MySQL> create database [dbname];
	# or
$ MySQL> CREATE DATABASE [dbname];

# Choose database
$ MySQL> use [dbname];

# Determine what db is in use
$ MySQL> select database();
	# or
$ MySQL> SELECT database();
# SHOW tables
$ MySQL> show tables;

# Display table struct
$ MySQL> describe [tablename];

# List indexes on a table
$ MySQL> show index from [tablename];

# CREATE table with columns
$ MySQL> CREATE TABLE IF NOT EXISTS [tablename]([column1] INT NOT NULL AUTO_INCREMENT PRIMARY KEY, [column2] VARCHAR(255)) ENGINE=INNODB;

$$MySQL db default storage engine is MyISAM, it does not support transactions by tables.
$$InnoDB supports row level locking, inserting and updating is much faster.

# Edit table
$ MySQL> ALTER TABLE [tablename] ADD COLUMN [column] text;
# Inserting record
$ MySQL> INSERT INTO [tablename] ([column1], [column2]) VALUES ('[value1]','[value2]');
# EXPLAIN (describes how SELECT will be processed including info about JOINS)
$ MySQL> EXPLAIN SELECT * FROM [tablename];

# EXPLAIN EXTENDED (estimates number of table rows that are filterd by the condition)
// Need more research
# SELECT *
$ MySQL> SELECT * FROM [tablename];

# SELECT [column]
$ MySQL> SELECT [column] FROM [tablename];

# Count records of [column]
$ MySQL> SELECT COUNT([column]) FROM [tablename];

# Counting and selecting grouped records of [column]
$ MySQL> SELECT *, (SELECT COUNT([column]) FROM [table name]) AS count FROM [tablename] GROUP BY [column];
# Selectors: <, >, =,!=; combine with AND, OR
$ MySQL> SELECT * FROM [table] WHERE [column] = [value]

# Containing [value]
$ MySQL> SELECT * FROM [tablename] WHERE [column] LIKE '%[value]%'

# Start with [value]
$ MySQL> SELECT * FROM [tablename] WHERE [column] LIKE '[value]%'

# Staring with val and end with ue
$ MySQL> SELECT * FROM [tablename] WHERE [column] LIKE '[val_ue]'

# Select range
$ MySQL> SELECT * FROM [tablename] WHERE [column] BETWEEEN [value1] and [value2];

# Select order (DESC, ASC)
$ MySQL> SELECT * FROM [tablename] WHERE [column] ORDER BY [column] ASC LIMIT [value]; 
# Update record
$ MySQL> UPDATE [tablename] SET [column] = '[new value]' WHERE [column] = [value];

# Delete record
$ MySQL> DELETE FROM [tablename] WHERE [column] = [value];

Dangerous

# Delete all record without dropping table (resets counter)
$ MySQL> DELETE FROM [tablename];

# Delete all records in a table
$ MySQL> truncate table [tablename];

# Remove column
$ MySQL> ALTER TABLE [tablename] DROP COLUMN [column];

# Delete Table
$ MySQL> DROP TABLE [tablename];

# Delete db
$ MySQL> DROP DATABASE [dbname];