32 lines
836 B
Bash
Executable File
32 lines
836 B
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Function to generate a random password
|
|
generate_password() {
|
|
openssl rand -base64 30 | tr -dc 'a-zA-Z0-9' | head -c 40
|
|
}
|
|
|
|
# Check if pwgen is available
|
|
PWGEN=$(which pwgen 2>/dev/null)
|
|
if [ -z "${PWGEN}" ]; then
|
|
echo "pwgen not found, using openssl for password generation"
|
|
AUTOGEN_PASSWORD=$(generate_password)
|
|
else
|
|
AUTOGEN_PASSWORD=$(${PWGEN} -n1 -v 40)
|
|
fi
|
|
|
|
USERNAME="$1"
|
|
|
|
if [ -z "${USERNAME}" ]; then
|
|
echo "Missing username"
|
|
exit 1
|
|
fi
|
|
|
|
cat <<EOF
|
|
CREATE USER '${USERNAME}'@'localhost' IDENTIFIED BY '${AUTOGEN_PASSWORD}';
|
|
GRANT ALL PRIVILEGES ON *.* TO '${USERNAME}'@'localhost' WITH GRANT OPTION;
|
|
CREATE USER '${USERNAME}'@'%' IDENTIFIED BY '${AUTOGEN_PASSWORD}';
|
|
GRANT ALL PRIVILEGES ON *.* TO '${USERNAME}'@'%' WITH GRANT OPTION;
|
|
SHOW GRANTS FOR '${USERNAME}';
|
|
FLUSH PRIVILEGES;
|
|
EOF
|