Mysql用户创建脚本

时间:2012-03-02 07:38:31

标签: mysql database

我正在尝试自动化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标记周围的单引号,我仍然有错误(语法错误)

我该如何做到这一点?

7 个答案:

答案 0 :(得分:54)

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

<小时/> 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');的结果 - 有关示例,请参阅Snowman's answer

答案 1 :(得分:10)

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

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

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

SELECT PASSWORD('my password');

答案 2 :(得分:8)

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

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

答案 3 :(得分:4)

请查看以下网址,这有助于您解决问题:

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 :(得分:1)

尝试:

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

其中PASSWORD是您的密码(引号)。

答案 5 :(得分:0)

我打开phpMYAdmin并转到用户选项卡,找到我尝试连接的用户点击了编辑权限,向下滚动到更改登录信息/复制用户部分,然后选择任何主机主机选项,它设置为本地。当我点击Go按钮时,它会生成一个类似于此处列出的脚本。

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 ;

答案 6 :(得分:0)

好的帽子是错误bcoz你写错了方法,只是你写了,

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

,真正的语法如下。看这里。

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

因为您的密码导致了该错误。它必须如图所示。