我刚刚下载并安装了WAMPserver 2.1,我想为MySQL 5.5.8数据库设置密码。我正在lynda.com和导师(Kevin Skoglund)的指导下输入:
mysql> use mysql
Database changed
mysql> UPDATE user
-> SET Password = PASSWORD('paSSword')
-> WHERE user = 'root';
当我按Enter键时,我收到有关WHERE语句的错误:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near 'WHERE' user='root'; at line 2
有没有人知道WHERE语句的正确语法?他的课程是在2007年完成的,所以我想语法已经改变,因为它在视频中对他有用。这条线为他回来了:
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql>
由于
答案 0 :(得分:9)
这适用于我的测试服务器:
mysql> UPDATE user SET password=PASSWORD('newpassword') WHERE user ='root';
mysql> Query OK
您正尝试设置密码而不是密码(小写)
晒。
答案 1 :(得分:2)
我在同一个lynda.com教程中遇到了同样的问题。解决方案是:
UPDATE mysql.user SET Password=PASSWORD('cleartext password')
WHERE User='root';
FLUSH PRIVILEGES;
答案 2 :(得分:1)
我遇到了完全相同的问题,问题解决如下:
UPDATE mysql.user SET Password = PASSWORD('YourPassword')WHERE User ='root';
注意:问题是我将<>(尖括号)而不是()(圆括号)放入程序中,我知道它听起来真的很蠢,但这就是发生的事情。因为()和<>在命令行上看起来看起来一样,我搞砸了。
答案 3 :(得分:0)
此代码:
UPDATE user SET password=PASSWORD('newpassword') WHERE user ='root';
将编译(因为缺少更好的词),但代码非常不安全:
以下是MySQL手册中有关它的内容:
注意强>
PASSWORD()函数由MySQL服务器中的身份验证系统使用;你应该不在你自己的应用程序中使用它。为此,请考虑使用MD5()或SHA1()。有关在应用程序中安全地处理密码和身份验证的详细信息,另请参阅RFC 2195第2节(质询 - 响应身份验证机制(CRAM))。
如果您坚持在数据库中存储密码,则应始终对其进行加密并使用安全哈希
MD5和SHA1不再安全。 2005年(!)该主题的主要专家Bruce Scheier说:"It's time for us all to migrate away from SHA-1."
我建议使用512位哈希长度的SHA2。
$user = mysql_real_escape_string($_POST['user']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$oldpassword = mysql_real_escape_string($_POST['oldpassword']);
if not(empty($password1) and ($password1 == $password2) {
$update = "UPDATE user
SET passhash = SHA2(CONCAT(id,'$password1'),512)
WHERE user = '$user' AND passhash = SHA2(CONCAT(id,'$oldpassword'),512)";
这确保了用户只有在知道旧密码时才能更改密码。
盐需要与密码存储在同一行,但不需要保密 只需确保将其添加到密码前面。
测试密码的方式如下:
SELECT * FROM user
WHERE username = 'root'
AND passhash = SHA2(CONCAT(id,'passwordexample'),512)
答案 4 :(得分:0)
以root用户身份登录mysql,然后
SET PASSWORD FOR 'user-name-here'@'hostname-name-here' = PASSWORD('new-password-here');
对于真实场景
SET PASSWORD FOR 'user_test'@'localhost' = PASSWORD('hello');