创建用户时更正mysql语法错误

时间:2013-01-18 07:06:41

标签: mysql permissions

所以我得到了非常常见的ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) mysql错误。我已经尝试了论坛上的所有典型修复,通过mysql_safe方法登录,然后尝试重置我的root密码。但是,这样做时会返回;

UPDATE user SET password=PASSWORD("PASSWORD")WHERE user="root";
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

因为没有行受到影响,我认为没有用户实际更改。我试图创建一个用户:

CREATE USER 'root'@'localhost' IDENTIFIED BY 'root'
    -> GRANT ALL ON *.* TO 'root'@'localhost'
    -> flush privileges;

However this returns with 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 'GRANT ALL ON *.* TO 'root'@'localhost'

查看当前用户是什么:

mysql> SELECT user();
+--------+
| user() |
+--------+
| root@  | 
+--------+

我认为语法错误是在“root”之后的@之后没有任何内容。如何将此信息编辑为root @ localhost并更正问题?

更新

在仔细阅读了mysqld文档后,我完成了本节的完美工作。

停止mysqld并使用--skip-grant-tables选项重新启动它。这使任何人都可以在没有密码和所有权限的情况下进行连接由于这是不安全的,您可能希望将--skip-grant-tables与--skip-networking结合使用以防止远程客户端连接。

使用以下命令连接到mysqld服务器:

shell> mysql

在mysql客户端中发出以下语句。将密码替换为您要使用的密码。

mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass')
    ->                   WHERE User='root';
mysql> FLUSH PRIVILEGES;

FLUSH语句告诉服务器将授权表重新加载到内存中,以便它注意到密码更改。

2 个答案:

答案 0 :(得分:2)

它应该是三个sql语句,

CREATE USER 'root'@'localhost' IDENTIFIED BY PASSWORD 'root';
GRANT ALL ON *.* TO 'root'@'localhost';
FLUSH PRIVILEGES;

答案 1 :(得分:0)

当我尝试登录全新安装的mysql服务器时,我得到了相同的错误消息(对用户'root'@'localhost'的访问被拒绝(使用密码:是))。

我不知道在redhat6.5上安装mysql-community-server(rpm)时,会创建一个超级用户帐户'root'@'localhost'并设置该超级用户的密码并将其存储在错误日志中文件并将其显示出来,我应该使用:

  • shell> grep“临时密码” /var/log/mysqld.log

我只是检查“ mysqld.log”文件中的密码并使用它登录。进入后,我已经更改了默认密码。

here is the link to the mysql's page for reference