Подтвердить что ты не робот

Создание пользователя Mysql script

Я пытаюсь автоматизировать процедуру создания пользователей MySQL. Я думал о создании временного файла, который будет содержать операторы создания mysql, то я бы назвал это следующим образом:

mysql -u root -proot < Темп

Но я застрял в синтаксисе mysql: здесь содержимое моего временного файла:


DROP DATABASE IF EXISTS mytestdatabase;
CREATE DATABASE mytestdatabase;
SELECT @password:="my password";
DELETE FROM mysql.user WHERE Host='localhost' AND User='mytestdatabase';
GRANT ALL PRIVILEGES ON mytestdatabase.* TO 'mytestdatabase'@'localhost' IDENTIFIED BY PASSWORD '@password';
FLUSH PRIVILEGES;

Но линия

GRANT ALL PRIVILEGES ON mytestdatabase.* TO 'mytestdatabase'@'localhost' IDENTIFIED BY PASSWORD '@password';

(Хэш пароля должен быть 41-значным шестнадцатеричным числом)

не интерпретируется, как я ожидал бы. Даже если я удаляю одиночные кавычки вокруг тега @password, у меня все еще есть ошибки (синтаксическая ошибка)

Как я могу сделать эту работу?

4b9b3361

Ответ 1

Просто чтобы ответить, почему возникает ошибка, и показать разницу:


A) Ожидает, что @password будет символьной строкой 1:
GRANT ALL PRIVILEGES 
    ON `mydb` . * TO 'username'@'localhost' IDENTIFIED 
BY
PASSWORD '@password';

Обратите внимание на использование ключевого слова PASSWORD!


B) Ожидает @password как чистое текстовое строковое значение:
GRANT ALL PRIVILEGES 
    ON `mydb` . * TO 'username'@'localhost' IDENTIFIED 
BY
'@password';

Обратите внимание на отсутствующее PASSWORD ключевое слово!


1 Где "хэш-строка" является результатом SELECT PASSWORD('clearTextPasswd'); - см. снеговик для примера.

Ответ 2

Если вы не хотите хранить пароль в открытом тексте, сохраните его в хэшированном формате -

GRANT ALL PRIVILEGES ON mytestdatabase.* TO 'mytestdatabase'@'localhost'
  IDENTIFIED BY PASSWORD '*7560636C2922C05954FE6A2446AA00C84708B57B';

Если хешированный пароль является результатом этого запроса -

SELECT PASSWORD('my password');

Ответ 3

Взгляните на следующий URL-адрес, и это поможет вам устранить проблему:

http://linuxadministrator.pro/blog/?p=147

mysql> select password('12345');
+-------------------------+
| password('123456') |
+-------------------------+
| 2ff898e158cd0311        |
+-------------------------+
1 row in set (0.00 sec)

mysql> create user test identified by password '2ff898e158cd0311';
Query OK, 0 rows affected (0.00 sec)

Ответ 4

У меня также была такая же проблема, она разрешена только путем установки пароля по указанному ниже запросу.

SET PASSWORD FOR 'user'@'localhost' = PASSWORD('MyNewPass');

Ответ 5

попробовать:

GRANT ALL PRIVILEGES ON mytestdatabase.* 
      TO [email protected] IDENTIFIED BY 'PASSWORD';

где PASSWORD - ваш пароль (в кавычках).

Ответ 6

Я открыл phpMYAdmin и перешел на вкладку "Пользователи", обнаружил, что пользователь, которого я пытался подключиться, нажал "Редактировать привилегии", прокрутился до раздела "Изменить информацию о пользователе/​​Копировать пользователя" и выберите Любой хост для хост, он был установлен на локальный. Когда я нажал кнопку Go, она сгенерировала script, подобную тем, которые перечислены здесь.

GRANT ALL PRIVILEGES ON * . * TO 'james'@'%' IDENTIFIED BY PASSWORD '*780E1D13F1C7713F341A117499C6D8644464C4CF' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

Ответ 7

Колодец - это ошибка bcoz, которую вы написали не так, как только вы написали,

GRANT ALL PRIVILEGES ON *.* TO 'USER'@'localhost' IDENTIFIED BY PASSWORD '@password';

и должен следовать истинный синтаксис. смотрите здесь.

GRANT ALL PRIVILEGES ON *.* TO 'USER'@'localhost' IDENTIFIED BY '@password';

потому что ваш пароль вызывает эту ошибку. он должен быть как показано.