我正在尝试自动化MySQL用户创建过程。我想创建一个包含mysql用户创建语句的临时文件,然后我会这样称呼它:
mysql -u根-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;但这条线
GRANT ALL PRIVILEGES ON mytestdatabase.* TO 'mytestdatabase'@'localhost' IDENTIFIED BY PASSWORD '@password';(密码散列应为41位十六进制数字)
并没有像我所期望的那样被解读。即使删除@password标签周围的单引号,我仍然存在错误(语法错误)。
我怎么才能把这事做好?
发布于 2012-03-02 08:03:44
如果你不想用明文存储密码,那就用散列格式保存它-
GRANT ALL PRIVILEGES ON mytestdatabase.* TO 'mytestdatabase'@'localhost'
IDENTIFIED BY PASSWORD '*7560636C2922C05954FE6A2446AA00C84708B57B';其中哈希密码是这个查询的结果-
SELECT PASSWORD('my password');发布于 2016-12-22 06:23:15
我也有同样的问题,它是通过设置密码通过下面提到的查询来解决的。
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('MyNewPass');
发布于 2013-04-12 11:17:46
看看下面的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)https://stackoverflow.com/questions/9529651
复制相似问题