You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

102 lines
2.2 KiB

7 months ago
#!/usr/bin/node
7 months ago
import mysql from 'mysql2/promise'
import { input, password } from '@inquirer/prompts'
import generator from 'generate-password'
7 months ago
import chalk from 'chalk'
7 months ago
import { program } from 'commander'
7 months ago
const log = console.log
7 months ago
program
7 months ago
.option('-u, --user <name>', 'User')
6 months ago
.option('--ssl', 'ssl')
7 months ago
program.parse(process.argv)
// getting options
const options = program.opts()
7 months ago
/**
7 months ago
* mariadb-drop.js
7 months ago
*
*
*
*/
7 months ago
const user = {
7 months ago
name: 'root',
7 months ago
password: undefined
}
7 months ago
if (options.user) {
user.name = options.user
}
7 months ago
log(chalk.red('Mariadb Create Database...'))
7 months ago
user.password = await password({
7 months ago
message: 'Enter Root Password:',
7 months ago
mask: '*',
async validate(value) {
if (!value) {
return 'Required!'
}
return true
}
})
// create connection, generate name for db and user, and generate password
const connection = await mysql.createConnection({
7 months ago
host: '127.0.0.1',
7 months ago
user: user.name,
7 months ago
password: user.password,
port: 3306
7 months ago
})
const database = {
name: 'db',
user: 'u'
}
database.name += generator.generate({
length: 15,
numbers: true
})
database.user += generator.generate({
length: 15,
numbers: true
})
database.password = generator.generate({
length: 30,
numbers: true
})
// create database
await connection.query('CREATE DATABASE ' + database.name + ' DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci')
await connection.query("CREATE USER " + database.user + "@'localhost' IDENTIFIED BY '" + database.password + "'")
await connection.query("CREATE USER " + database.user + "@'%' IDENTIFIED BY '" + database.password + "'")
await connection.query("GRANT ALL PRIVILEGES ON " + database.name + ".* TO " + database.user + "@localhost")
6 months ago
if (options.ssl) {
await connection.query("GRANT ALL PRIVILEGES ON " + database.name + ".* TO " + database.user + " require SSL")
}
7 months ago
await connection.query("FLUSH PRIVILEGES")
connection.destroy()
// show name, user and passwort
7 months ago
log(' ')
log(chalk.green('Database created!'))
log(' ')
log(chalk.green('name:') + ' ' + chalk.cyan(database.name))
log(chalk.green('user:') + ' ' + chalk.cyan(database.user))
log(chalk.green('password:') + ' ' + chalk.cyan(database.password))