initial commit
This commit is contained in:
Executable
+136
@@ -0,0 +1,136 @@
|
||||
#!/bin/bash
|
||||
|
||||
# MySQL Setup Script for Bike Service Application
|
||||
# This script will create the database and user for the application
|
||||
|
||||
set -e
|
||||
|
||||
echo "🗄️ Setting up MySQL database for Bike Service Application..."
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
print_status() {
|
||||
echo -e "${GREEN}[INFO]${NC} $1"
|
||||
}
|
||||
|
||||
print_warning() {
|
||||
echo -e "${YELLOW}[WARNING]${NC} $1"
|
||||
}
|
||||
|
||||
print_error() {
|
||||
echo -e "${RED}[ERROR]${NC} $1"
|
||||
}
|
||||
|
||||
# Check if MySQL is running
|
||||
if ! systemctl is-active --quiet mysql; then
|
||||
print_error "MySQL is not running. Please start MySQL first:"
|
||||
echo "sudo systemctl start mysql"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get database credentials
|
||||
echo "Enter MySQL root password:"
|
||||
read -s MYSQL_ROOT_PASSWORD
|
||||
|
||||
# Get application database credentials
|
||||
echo "Enter database name (default: bikeservice_db):"
|
||||
read DB_NAME
|
||||
DB_NAME=${DB_NAME:-bikeservice_db}
|
||||
|
||||
echo "Enter database username (default: bikeservice_user):"
|
||||
read DB_USER
|
||||
DB_USER=${DB_USER:-bikeservice_user}
|
||||
|
||||
echo "Enter database password:"
|
||||
read -s DB_PASSWORD
|
||||
|
||||
# Validate password strength
|
||||
if [ ${#DB_PASSWORD} -lt 8 ]; then
|
||||
print_warning "Password is less than 8 characters. Consider using a stronger password."
|
||||
fi
|
||||
|
||||
print_status "Creating database and user..."
|
||||
|
||||
# Create SQL script
|
||||
cat > /tmp/mysql_setup.sql << EOF
|
||||
-- Create database
|
||||
CREATE DATABASE IF NOT EXISTS ${DB_NAME}
|
||||
CHARACTER SET utf8mb4
|
||||
COLLATE utf8mb4_unicode_ci;
|
||||
|
||||
-- Create user
|
||||
CREATE USER IF NOT EXISTS '${DB_USER}'@'localhost'
|
||||
IDENTIFIED BY '${DB_PASSWORD}';
|
||||
|
||||
-- Grant privileges
|
||||
GRANT ALL PRIVILEGES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
|
||||
|
||||
-- Grant additional privileges for Laravel
|
||||
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON ${DB_NAME}.* TO '${DB_USER}'@'localhost';
|
||||
|
||||
-- Flush privileges
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
-- Show created database and user
|
||||
SHOW DATABASES;
|
||||
SELECT User, Host FROM mysql.user WHERE User = '${DB_USER}';
|
||||
|
||||
-- Display success message
|
||||
SELECT 'Database and user created successfully!' as Status;
|
||||
EOF
|
||||
|
||||
# Execute SQL script
|
||||
if mysql -u root -p"$MYSQL_ROOT_PASSWORD" < /tmp/mysql_setup.sql; then
|
||||
print_status "Database and user created successfully!"
|
||||
|
||||
# Create .env database configuration
|
||||
cat > /tmp/database_config.env << EOF
|
||||
# Database Configuration
|
||||
DB_CONNECTION=mysql
|
||||
DB_HOST=127.0.0.1
|
||||
DB_PORT=3306
|
||||
DB_DATABASE=${DB_NAME}
|
||||
DB_USERNAME=${DB_USER}
|
||||
DB_PASSWORD=${DB_PASSWORD}
|
||||
EOF
|
||||
|
||||
print_status "Database configuration saved to /tmp/database_config.env"
|
||||
print_warning "Copy these settings to your Laravel .env file:"
|
||||
echo
|
||||
cat /tmp/database_config.env
|
||||
echo
|
||||
|
||||
# Test database connection
|
||||
print_status "Testing database connection..."
|
||||
if mysql -u "$DB_USER" -p"$DB_PASSWORD" -e "USE ${DB_NAME}; SELECT 1;" > /dev/null 2>&1; then
|
||||
print_status "Database connection test successful!"
|
||||
else
|
||||
print_error "Database connection test failed!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
else
|
||||
print_error "Failed to create database and user!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Clean up
|
||||
rm -f /tmp/mysql_setup.sql
|
||||
|
||||
print_status "MySQL setup completed!"
|
||||
echo
|
||||
echo "Next steps:"
|
||||
echo "1. Copy the database configuration to your Laravel .env file"
|
||||
echo "2. Run Laravel migrations: php artisan migrate"
|
||||
echo "3. Test your application"
|
||||
echo
|
||||
echo "Database credentials:"
|
||||
echo "- Database: ${DB_NAME}"
|
||||
echo "- Username: ${DB_USER}"
|
||||
echo "- Password: [hidden]"
|
||||
echo "- Host: 127.0.0.1"
|
||||
echo "- Port: 3306"
|
||||
Reference in New Issue
Block a user