Пакетный файл для создания пользователя, а затем назначить разрешения с MySQL - PullRequest
1 голос
/ 11 июля 2011

Я пытаюсь создать командный файл для создания нового пользователя, а затем назначить разрешения для нового пользователя. Я хочу сделать что-то вроде этого:

c:\mysql\bin\mysql -uroot -ppassword < CREATE USER 'username_here'@'localhost' IDENTIFIED BY 'password_here';
c:\mysql\bin\mysql -uroot -ppassword < GRANT ALL ON myDB.* TO 'username_here'@'localhost';

Проблема в том, что я получаю сообщение об ошибке: система не может найти указанный файл. Я знаю, что звоню в mysql exe из нужного места, потому что если я просто сделаю:

c:\mysql\bin\mysql -uroot -ppassword

он входит в систему и выдает приглашение mysql. Я что-то не так делаю?

Ответы [ 3 ]

2 голосов
/ 11 июля 2011

Вы можете использовать опцию --execute для передачи одного оператора в базу данных:

c:\mysql\bin\mysql -uroot -ppassword --execute="CREATE USER 'username_here'@'localhost' IDENTIFIED BY 'password_here';"
c:\mysql\bin\mysql -uroot -ppassword --execute="GRANT ALL ON myDB.* TO 'username_here'@'localhost';"
1 голос
/ 11 июля 2011

Вам нужно поместить кавычки вокруг команды, иначе оболочка решит, что вы даете ей имя файла:

c:\mysql\bin\mysql -uroot -ppassword < "CREATE USER 'username_here'@'localhost' IDENTIFIED BY 'password_here';"
c:\mysql\bin\mysql -uroot -ppassword < "GRANT ALL ON myDB.* TO 'username_here'@'localhost';"
0 голосов
/ 24 декабря 2013

Вы можете немного упростить вещи, используя только одну GRANT инструкцию:

mysql mysql -uroot -ppassword --execute "GRANT ALL ON myDB.* TO username_here@localhost IDENTIFIED BY 'password_here';"

Кажется, вам нужно указать базу данных mysql, когда вы запускаете ее таким образом, и если вы не используете зарезервированные слова для своего имени пользователя, вы можете избежать нескольких кавычек.

...