|  |  |  | @ -1,5 +1,8 @@ | 
			
		
	
		
			
				
					|  |  |  |  | import mysql from 'mysql2/promise' | 
			
		
	
		
			
				
					|  |  |  |  | import { input, password } from '@inquirer/prompts' | 
			
		
	
		
			
				
					|  |  |  |  | import chalk from 'chalk' | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const log = console.log | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | /** | 
			
		
	
		
			
				
					|  |  |  |  |  *  mariadb-drop.js | 
			
		
	
	
		
			
				
					|  |  |  | @ -11,12 +14,15 @@ import { input, password } from '@inquirer/prompts' | 
			
		
	
		
			
				
					|  |  |  |  |  */ | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const user = { | 
			
		
	
		
			
				
					|  |  |  |  |     name: undefined, | 
			
		
	
		
			
				
					|  |  |  |  |     name: 'root', | 
			
		
	
		
			
				
					|  |  |  |  |     password: undefined | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | user.name = await input({ | 
			
		
	
		
			
				
					|  |  |  |  |     message: 'Root:', | 
			
		
	
		
			
				
					|  |  |  |  | log(chalk.cyan('Mariadb drop Database...')) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | user.password = await password({ | 
			
		
	
		
			
				
					|  |  |  |  |     message: 'Enter Root Password:', | 
			
		
	
		
			
				
					|  |  |  |  |     mask: '*', | 
			
		
	
		
			
				
					|  |  |  |  |     async validate(value) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (!value) { | 
			
		
	
		
			
				
					|  |  |  |  |             return 'Required!' | 
			
		
	
	
		
			
				
					|  |  |  | @ -26,9 +32,8 @@ user.name = await input({ | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | }) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | user.password = await password({ | 
			
		
	
		
			
				
					|  |  |  |  |     message: 'Password:', | 
			
		
	
		
			
				
					|  |  |  |  |     mask: '*', | 
			
		
	
		
			
				
					|  |  |  |  | const database = await input({ | 
			
		
	
		
			
				
					|  |  |  |  |     message: 'Database:', | 
			
		
	
		
			
				
					|  |  |  |  |     async validate(value) { | 
			
		
	
		
			
				
					|  |  |  |  |         if (!value) { | 
			
		
	
		
			
				
					|  |  |  |  |             return 'Required!' | 
			
		
	
	
		
			
				
					|  |  |  | @ -46,38 +51,17 @@ const connection = await mysql.createConnection({ | 
			
		
	
		
			
				
					|  |  |  |  |     password: user.password | 
			
		
	
		
			
				
					|  |  |  |  | }) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | const database = { | 
			
		
	
		
			
				
					|  |  |  |  |     name: 'db', | 
			
		
	
		
			
				
					|  |  |  |  |     user: 'u' | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | database.name += generator.generate({ | 
			
		
	
		
			
				
					|  |  |  |  | 	length: 15, | 
			
		
	
		
			
				
					|  |  |  |  | 	numbers: true | 
			
		
	
		
			
				
					|  |  |  |  | }) | 
			
		
	
		
			
				
					|  |  |  |  | // create database
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | database.user += generator.generate({ | 
			
		
	
		
			
				
					|  |  |  |  | 	length: 15, | 
			
		
	
		
			
				
					|  |  |  |  | 	numbers: true | 
			
		
	
		
			
				
					|  |  |  |  | }) | 
			
		
	
		
			
				
					|  |  |  |  | const [results ] = await connection.query("SELECT User FROM mysql.db WHERE Db = '" + database + "'") | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | database.password = generator.generate({ | 
			
		
	
		
			
				
					|  |  |  |  | 	length: 30, | 
			
		
	
		
			
				
					|  |  |  |  | 	numbers: true | 
			
		
	
		
			
				
					|  |  |  |  | results.forEach(async (entity) => { | 
			
		
	
		
			
				
					|  |  |  |  |     await connection.query("DROP USER IF EXISTS '" + entity.User + "'@localhost"); | 
			
		
	
		
			
				
					|  |  |  |  |     await connection.query("DROP USER IS EXISTS '" + entity.User + "'@'%'"); | 
			
		
	
		
			
				
					|  |  |  |  | }) | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // 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") | 
			
		
	
		
			
				
					|  |  |  |  | await connection.query("FLUSH PRIVILEGES") | 
			
		
	
		
			
				
					|  |  |  |  | await connection.query("DROP DATABASE IF EXISTS " + database); | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | connection.destroy() | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | // show name, user and passwort
 | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | console.log(database.name) | 
			
		
	
		
			
				
					|  |  |  |  | console.log(database.user) | 
			
		
	
		
			
				
					|  |  |  |  | console.log(database.password) | 
			
		
	
		
			
				
					|  |  |  |  | log(chalk.green('Database ' + database + ' droped!')) | 
			
		
	
	
		
			
				
					|  |  |  | 
 |