Mysql用户创建脚本

lin*_*ing 26 mysql database

我正在尝试自动化MySQL用户创建过程.我想创建一个包含mysql用户创建语句的临时文件,然后我会这样调用它:

mysql -u root -proot <temp

但我坚持使用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;
Run Code Online (Sandbox Code Playgroud)

但行

GRANT ALL PRIVILEGES ON mytestdatabase.* TO 'mytestdatabase'@'localhost' IDENTIFIED BY PASSWORD '@password';
Run Code Online (Sandbox Code Playgroud)

(密码哈希值应为41位十六进制数)

并没有被解释为我所期望的那样.即使我删除@password标记周围的单引号,我仍然有错误(语法错误)

我怎样才能做到这一点?

eye*_*hUp 54

只是为了回答错误发生的原因并显示差异:


A)期望@password哈希字符串1值:

GRANT ALL PRIVILEGES 
    ON `mydb` . * TO 'username'@'localhost' IDENTIFIED 
BY
PASSWORD '@password';
Run Code Online (Sandbox Code Playgroud)

注意使用PASSWORD关键字!


B)期望@password明文字符串值:

GRANT ALL PRIVILEGES 
    ON `mydb` . * TO 'username'@'localhost' IDENTIFIED 
BY
'@password';
Run Code Online (Sandbox Code Playgroud)

注意缺少的 PASSWORD关键字!


1 "哈希字符串"的结果SELECT PASSWORD('clearTextPasswd');- 请参阅雪人的答案.


Dev*_*art 11

如果您不想以明文形式存储密码,请将其保存为散列格式 -

GRANT ALL PRIVILEGES ON mytestdatabase.* TO 'mytestdatabase'@'localhost'
  IDENTIFIED BY PASSWORD '*7560636C2922C05954FE6A2446AA00C84708B57B';
Run Code Online (Sandbox Code Playgroud)

散列密码是此查询的结果 -

SELECT PASSWORD('my password');
Run Code Online (Sandbox Code Playgroud)


小智 8

我也有同样的问题,只需通过下面提到的查询设置密码即可解决.

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


小智 5

查看以下网址,这将帮助您解决问题:

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)
Run Code Online (Sandbox Code Playgroud)