是的,另一个 MySql:错误 1045 (28000):用户 'root'@'localhost' 访问被拒绝(使用密码:是)
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/12085022/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Yes, Another MySql: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
提问by aalab002
So I'm not sure what caused this to scramble my MySql password (upgrade to Mountain Lion, reinstalling ruby/rails (other issues), or simply just bad luck) but here we are:
所以我不确定是什么导致我的 MySql 密码混乱(升级到 Mountain Lion,重新安装 ruby/rails(其他问题),或者只是运气不好),但我们在这里:
Logging in to mysql is fine, but I can't log into the root
登录mysql没问题,但是无法登录root
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.
When I try to login to root:
当我尝试登录到 root 时:
Ayman$ mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
Looked at the users:
看了用户:
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>
I've tried reinstalling MySql (not sure how to uninstall it), stopping the server instance and restarting it, and every other suggestion on the myriad of similar questions to the right. I've been on this for 3 days now and it's killing me.
我试过重新安装 MySql(不知道如何卸载它),停止服务器实例并重新启动它,以及关于右侧无数类似问题的所有其他建议。我已经用了 3 天了,这让我很伤心。
Any clue?
有什么线索吗?
回答by Marc B
You can start MySQL(the server, not the command line monitor) with --skip-grant-tables
, which shuts off the permissions systems temporarily. That'll let you get in, update your accounts/passwords without those screwed up permissions getting in the way. Once things are fixed, you do a flush privileges;
to re-enable the permissions system.
您可以使用启动 MySQL(服务器,而不是命令行监视器)--skip-grant-tables
,这会暂时关闭权限系统。这会让您进入,更新您的帐户/密码,而不会妨碍那些搞砸的权限。一旦事情得到解决,您就flush privileges;
可以重新启用权限系统。
回答by aalab002
Ok I figured it out using the tutorial on this website:
好的,我使用本网站上的教程弄清楚了:
I had no clue how to run skip grant tables as evidenced below:
我不知道如何运行跳过授权表,如下所示:
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
Here is where I googled Skip Grant Tables and found the tutorial listed above:
这是我在 google 上搜索 Skip Grant Tables 并找到上面列出的教程的地方:
Don't think any of the initial part of the tutorial worked:
不要认为本教程的任何初始部分都有效:
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
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
ERROR 2002 (HY000): 无法通过 socket '/tmp/mysql.sock' 连接到本地 MySQL 服务器 (2)
HERE IS THE MAGIC!:
这就是魔法!:
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)
More stuff from the link above that didn't work:
上面链接中的更多内容不起作用:
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
IT's ALIVE!!!!:
它还活着!!!!:
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.
Thank you to MARC B and the StackOverflow community for pointing me in the right direction and getting this novice back in the game!!
感谢 MARC B 和 StackOverflow 社区为我指明了正确的方向并使这个新手重新回到游戏中!!