是的,另一个MySql:ERROR 1045(28000):拒绝用户访问';根'@';本地主机';(使用密码:是)

是的,另一个MySql:ERROR 1045(28000):拒绝用户访问';根'@';本地主机';(使用密码:是),mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,因此,我不确定是什么原因导致我的MySql密码被打乱(升级到Mountain Lion、重新安装ruby/rails(其他问题),或者只是运气不好),但我们: 登录mysql很好,但我无法登录到根目录 Ayman$ mysql Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 96 Server version: 5.5.25 MySQL Community Server (

因此,我不确定是什么原因导致我的MySql密码被打乱(升级到Mountain Lion、重新安装ruby/rails(其他问题),或者只是运气不好),但我们:

登录mysql很好,但我无法登录到根目录

Ayman$ mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 96
Server version: 5.5.25 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
当我尝试登录到root时:

Ayman$ mysql -u root -p
Enter password: 
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
查看用户:

mysql> CREATE USER root@localhost IDENTIFIED BY 'out22out';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER privilege(s)     for this operation
mysql> SELECT USER(),CURRENT_USER();
+-----------------+----------------+
| USER()          | CURRENT_USER() |
+-----------------+----------------+
| Ayman@localhost | @localhost     |
+-----------------+----------------+
1 row in set (0.00 sec)

mysql> SELECT USER, HOST FROM mysql.user;
ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'
mysql> select user, host from mysql.user;
ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'
mysql> grant all on *.* to Ayman@'%';
ERROR 1045 (28000): Access denied for user ''@'localhost' (using password: NO)
mysql> 
我尝试过重新安装MySql(不知道如何卸载它)、停止服务器实例并重新启动它,以及其他关于无数类似问题的建议。我已经做了三天了,我都快死了


有线索吗

您可以(服务器,而不是命令行监视器)使用
--跳过授权表
,这将暂时关闭权限系统。这样你就可以进入,更新你的帐户/密码,而不会受到那些糟糕的权限的阻碍。一旦事情解决了,您就可以执行
flush特权
重新启用权限系统。

好的,我使用教程解决了这个问题:

我不知道如何运行skip grant表,如下所示:

Last login: Wed Aug 22 23:10:42 on console
Ayman$ --skip-grant-tables
-bash: --skip-grant-tables: command not found
Ayman$ mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'    (2)
Ayman$ --skip-grant-tables
-bash: --skip-grant-tables: command not found
在这里,我在谷歌上搜索了Skip Grant表,找到了上面列出的教程:

不要认为本教程的任何初始部分有效:

Ayman$ # vi /etc/rc.d/init.d/mysql
Ayman$ $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args     >/dev/null 2>&1 &
[1] 302
Ayman$ $bindir/mysqld_safe --skip-grant-tables --datadir=$datadir --pid-  file=$server_pid_file $other_args >/dev/null 2>&1 &
[2] 303
[1]   Exit 127                $bindir/mysqld_safe --datadir=$datadir --pid-   file=$server_pid_file $other_args > /dev/null 2>&1
Ayman$ mysql start
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'   (2)
[2]+  Exit 127                $bindir/mysqld_safe --skip-grant-tables --datadir=$datadir -  -pid-file=$server_pid_file $other_args > /dev/null 2>&1
Ayman$ # service mysql start
Ayman$ mysql -u root mysql
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Ayman$ mysql
错误2002(HY000):无法通过套接字“/tmp/MySQL.sock”连接到本地MySQL服务器(2)

这就是魔法!:

Ayman$ mysql -u root mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 9
Server version: 5.5.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> UPDATE user SET password=PASSWORD('newpassword') WHERE user='root';
Query OK, 4 rows affected (0.11 sec)
Rows matched: 4  Changed: 4  Warnings: 0

mysql> flush privileges
-> ;
Query OK, 0 rows affected (0.00 sec)
以上链接中的更多内容无效:

mysql> service mysql stop
-> ;
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 'service mysql stop'    at line 1
mysql> # service mysql stop
mysql> # vi /etc/rc.d/init.d/mysql
mysql> $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args   >/dev/null 2>&1 &
    -> 
    -> ;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'   (2)
ERROR: 
Can't connect to the server

mysql> $bindir/mysqld_safe --skip-grant-tables --datadir=$datadir --pid-  file=$server_pid_file $other_args >/dev/null 2>&1 &;
No connection. Trying to reconnect...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'   (2)
ERROR: 
Can't connect to the server

mysql> $bindir/mysqld_safe --skip-grant-tables --datadir=$datadir --pid-  file=$server_pid_file $other_args >/dev/null 2>&1 &;
No connection. Trying to reconnect...
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
ERROR: 
Can't connect to the server

mysql> $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args   >/dev/null 2>&1 &;
No connection. Trying to reconnect...
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
ERROR: 
Can't connect to the server
它还活着!!!!:

mysql> quit
Bye
Ayman$ mysql -u root -p
Enter password: newpassword 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 25
Server version: 5.5.27 MySQL Community Server (GPL)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

感谢MARC B和StackOverflow社区为我指明了正确的方向,并让这个新手重返游戏

这里解释了错误1045:我找到了!我根据你的建议在谷歌上搜索了skip grant表,发现本教程基本上只是运行了'Ayman$mysql-u root mysql''mysql>UPDATE user SET password=password('newpassword'),其中user='root';'然后,'mysql>flush privileges',然后我重新登录:'Ayman$mysql-u root-p''输入密码:newpassword',它成功了!谢谢@MarcB!但愿我能胜过你,但我只是一个卑微的傻瓜!谢谢你的解决方案。这解决了我的问题。尽管执行了其他stackoverflow线程提到的故障排除,我还是不断地遇到相同的错误。