Files
basegame-vcko/sql/USER_SETUP_GUIDE.md

3.5 KiB

MariaDB User Setup Guide for VCK Online

Run these commands interactively in MariaDB as root to investigate and fix the user setup.

Investigation Commands

1. Check if the database exists

SHOW DATABASES LIKE 'vckonline';

2. Check if the user exists and from which hosts

SELECT User, Host FROM mysql.user WHERE User = 'vckonline';

3. Check current privileges (if user exists)

SHOW GRANTS FOR 'vckonline'@'localhost';
SHOW GRANTS FOR 'vckonline'@'127.0.0.1';
SHOW GRANTS FOR 'vckonline'@'%';

4. Check if database has data (if database exists)

USE vckonline;
SHOW TABLES;

5. Verify data exists in key tables

SELECT COUNT(*) AS citizens_count FROM citizens;
SELECT COUNT(*) AS monsters_count FROM monsters;
SELECT COUNT(*) AS domains_count FROM domains;
SELECT COUNT(*) AS dukes_count FROM dukes;
SELECT COUNT(*) AS starters_count FROM starters;

Fix Commands

Scenario A: User doesn't exist - Create new user

-- Create user for localhost connections
CREATE USER 'vckonline'@'localhost' IDENTIFIED BY 'vckonline';

-- Create user for 127.0.0.1 connections (SSH tunnel)
CREATE USER 'vckonline'@'127.0.0.1' IDENTIFIED BY 'vckonline';

-- Create user for remote connections (optional, for direct connections)
CREATE USER 'vckonline'@'%' IDENTIFIED BY 'vckonline';

-- Grant privileges
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'localhost';
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'127.0.0.1';
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'%';

-- Apply changes
FLUSH PRIVILEGES;

Scenario B: User exists but password is wrong - Reset password

-- Reset password for existing user
ALTER USER 'vckonline'@'localhost' IDENTIFIED BY 'vckonline';
ALTER USER 'vckonline'@'127.0.0.1' IDENTIFIED BY 'vckonline';
ALTER USER 'vckonline'@'%' IDENTIFIED BY 'vckonline';

-- Ensure privileges are granted
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'localhost';
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'127.0.0.1';
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'%';

-- Apply changes
FLUSH PRIVILEGES;

Scenario C: User exists but lacks privileges - Grant privileges

-- Grant privileges
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'localhost';
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'127.0.0.1';
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'%';

-- Apply changes
FLUSH PRIVILEGES;

Verification

After running the fix commands, verify the setup:

-- Check user exists
SELECT User, Host FROM mysql.user WHERE User = 'vckonline';

-- Check privileges
SHOW GRANTS FOR 'vckonline'@'localhost';
SHOW GRANTS FOR 'vckonline'@'127.0.0.1';

-- Test connection (from another terminal, not in MariaDB)
-- mysql -u vckonline -p vckonline
-- Password: vckonline

Quick Fix (All-in-One)

If you're confident the database exists with data, run this complete setup:

-- Create users if they don't exist (will error if they do, that's OK)
CREATE USER IF NOT EXISTS 'vckonline'@'localhost' IDENTIFIED BY 'vckonline';
CREATE USER IF NOT EXISTS 'vckonline'@'127.0.0.1' IDENTIFIED BY 'vckonline';
CREATE USER IF NOT EXISTS 'vckonline'@'%' IDENTIFIED BY 'vckonline';

-- Grant privileges (safe to run even if already granted)
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'localhost';
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'127.0.0.1';
GRANT ALL PRIVILEGES ON vckonline.* TO 'vckonline'@'%';

-- Apply changes
FLUSH PRIVILEGES;

-- Verify
SHOW GRANTS FOR 'vckonline'@'localhost';