mysql登录问题

时间:2016-09-01 23:04:22

标签: mysql installation vps

我在不同的VPS上多次遇到过这个问题。我通常会找到不同的方法,但我想永久地解决这个问题。

当我尝试登录mysql时出现这些错误:

(env) lit@digitalocean:~/HowLit/init$ mysql
ERROR 1045 (28000): Access denied for user 'lit'@'localhost' (using password: NO)
(env) lit@digitalocean:~/HowLit/init$ mysql -u lit
ERROR 1045 (28000): Access denied for user 'lit'@'localhost' (using password: NO)

然后如果我尝试root:

(env) lit@digitalocean:~/HowLit/init$ mysql -u root
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

但是,如果我这样做:

sudo mysql -u root

然后输入用户点亮的正常密码,然后就可以了。

但是我无法创建数据库或其他任何内容。 我已经多次清除并重新安装了mysql,并一遍又一遍地遇到同样的错误。

导致这些错误的原因是什么?在我的装置中我做错了什么?

mysql> show grants;
+---------------------------------------------------------------------+
| Grants for root@localhost                                           |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'localhost' WITH GRANT OPTION        |
+---------------------------------------------------------------------+
2 rows in set (0.00 sec) 

1 个答案:

答案 0 :(得分:1)

尝试使用此命令登录: mysql -u root -p

mysql -u <your user name> -p

输入您之前为这些用户设置的密码。

如果你忽略添加-p,mysql会假设你试图在没有密码的情况下登录,如果这与mysql用户表中存储的密码不匹配,它将拒绝你登录的尝试。

登录后,请输入:show grants;

现在您已经显示了用户授权,问题是root用户的设置方式需要您使用sudo。要像使用sudo一样修复此登录,然后运行以下行。

请仔细阅读。在确保您拥有所需的任何mysql数据的备份之后(这不会删除您的数据,但保证安全起见总是好的),首先运行: DROP USER 'root'@'localhost';

然后立即运行,而不先注销: CREATE USER 'root'@'%' IDENTIFIED BY '<<<YOUR DESIRED PASSWORD>>>'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES;

您现在应该可以在没有sudo的情况下登录。对于非digitalocean机器,我宁愿将root数据库帐户限制为localhost以获得最佳安全性,但如果您选择了足够的密码,那么无论如何都应该没问题。

如果您不想在上面创建用户,也可以尝试使用以下方式登录: mysql -u root -h localhost -p 要么 mysql -u lit -h localhost -p(如果您在mysql中创建了一个用户点亮的@ localhost)

由于您对调试根本原因(bravo)感兴趣,您可以运行它并查看在mysql中创建了哪些其他用户。登录mysql,然后运行: use mysql; select * from user;

将输出粘贴到禁用自动换行的文本编辑器中将使其可读。

您应该看到已创建了其他用户帐户。请注意,某些帐户可能优先于您帐户的权限,这可能会导致您的登录问题。即使密码被删除,我也不建议在线发布输出。祝你好运。