Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

My sql 8.0 использование

EviL Dimka Ученик (120), открыт 2 недели назад
DROP DATABASE IF EXISTS recovery;

Create database recovery;

DROP DATABASE IF EXISTS DB;

CREATE DATABASE DB;
CREATE TABLE DB.users (
name VARCHAR(64),
pass VARCHAR(255)
);
use DB;

SET @key = 'test';

DROP PROCEDURE IF EXISTS create_users;

DELIMITER //

CREATE PROCEDURE create_users()
BEGIN
SET @counter = 1;
WHILE (@counter <= 14) DO
SET @user_name = CONCAT('''', 'user', @counter, '''', '@''localhos''');
SET @query = CONCAT('DROP USER IF EXISTS ', @user_name);

PREPARE state FROM @query;
EXECUTE state;

SET @user_pass = SUBSTRING(MD5(RAND()) FROM 1 FOR 5);
SET @query = CONCAT('CREATE USER ', @user_name, ' IDENTIFIED BY ''', @user_pass, '''');

PREPARE state FROM @query;
EXECUTE state;

SET @user_pass = HEX(AES_ENCRYPT(@user_pass, @key));

SET @query = CONCAT('INSERT INTO DB.users (name, pass) VALUES (', '''', 'user', @counter, '''', ', ', '''', @user_pass, '''', ')');

PREPARE state FROM @query;
EXECUTE state;

SET @counter = @counter + 1;
END WHILE;
END
//
DELIMITER ;

DROP PROCEDURE IF EXISTS create_dbs;

DELIMITER //

CREATE PROCEDURE create_dbs()
BEGIN
SET @counter = 1;
WHILE (@counter <= 14) DO
SET @db_name = CONCAT('DB', @counter);
SET @query = CONCAT('DROP DATABASE IF EXISTS ', @db_name);

PREPARE state FROM @query;
EXECUTE state;

SET @query = CONCAT('CREATE DATABASE ', @db_name);

PREPARE state FROM @query;
EXECUTE state;

SET @counter = @counter + 1;
END WHILE;
END
//
DELIMITER ;

DROP PROCEDURE IF EXISTS create_privilegies;

DELIMITER //

CREATE PROCEDURE create_privilegies()
BEGIN
SET @counter = 1;
WHILE (@counter <= 14) DO
SET @user_name = CONCAT('''', 'user', @counter, '''', '@''localhos''');
SET @db_name = CONCAT('DB', @counter, '.*');

SET @query = CONCAT('GRANT ALL PRIVILEGES ON ', @db_name, ' TO ', @user_name);

PREPARE state FROM @query;
EXECUTE state;

SET @counter = @counter + 1;
END WHILE;
END
//
DELIMITER ;

DROP USER IF EXISTS 'sa'@'localhos';
CREATE USER 'sa'@'localhos' IDENTIFIED BY 'de_2';

SELECT user, host FROM mysql.user WHERE user = 'sa';

call create_users();
call create_dbs();
call create_privilegies();

SELECT name,CAST((AES_DECRYPT(UNHEX(pass), @key)) AS CHAR(10000) ) as pass
FROM DB.users;
4 ответа
IMPERATOR Мастер (2005) 2 недели назад
Я че bлядь на программиста похож?
Tonita Winebrenner Мастер (1127) 2 недели назад
ой я сама в первый раз это вижу но вроде создаешь базы юзеров пароли и раздаешь права
Андрей Высший разум (482479) 2 недели назад
Странности в твоём коде начинаются с первых же строчек. Например, в:
 CREATE TABLE DB.users (
name VARCHAR(64),
pass VARCHAR(255)
);
полностью отсутствует создание первичного ключа.

Создание множества пользователей и идентичных таблиц отдельно для каждого пользователя... ЗАЧЕМ??? Какую именно задачу ты пытаешься решить таким сомнительным способом?
Похожие вопросы