7

mysql登录提示甚至不提供密码,如果提供就像mysql -u root -p它提示输入密码,如果提供就像mysql -u root它在不要求密码的情况下登录我已经运行了查询

select user,hosts from mysql.user; 

并且知道有 3 个具有不同主机的 root 用户,如图所示

+------+-------------+
| user | host        |
+------+-------------+
| root | 127.0.0.1   |
| root | db-busindia |
| root | localhost   |
+------+-------------+

有趣的是 mysql 服务器名称也是 db-busindia ,是root@'db-busindia'罪魁祸首吗?

4

5 回答 5

3

检查 my.cnf 文件的 [client] 部分中的行:

user=root 
password=some text.

这些使您无需用户名或密码即可登录。password如果要提示您输入密码,请删除行。

于 2013-10-26T08:49:05.203 回答
2

是的,即使我很久以前就遇到过这个问题。通常我们在安装 MySQL 服务器时遇到它们,您的所有客户端连接都使用套接字建立连接。您可以简单地在 mysql.user 表下检查其插件。

Ubuntu@localhost:~# mysql 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 6
Server version: 5.7.29-0ubuntu0.18.04.1 (Ubuntu)

Copyright (c) 2000, 2020, 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> SELECT User, Host, plugin FROM mysql.user;
+------------------+-----------+-----------------------+
| User             | Host      | plugin                |
+------------------+-----------+-----------------------+
| root             | localhost | auth_socket           |
| mysql.session    | localhost | mysql_native_password |
| mysql.sys        | localhost | mysql_native_password |
| debian-sys-maint | localhost | mysql_native_password |
+------------------+-----------+-----------------------+

mysql> update mysql.user set plugin='mysql_native_password' where user = 'root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

您可以通过将插件值更新为“mysql_native_password”来禁用该选项。

Ubuntu@localhost:~# mysql -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
Ubuntu@localhost:~# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
于 2020-02-27T12:35:56.690 回答
1

MySQL 允许我们在不通过userandpassword的情况下登录,只需将userandpassword放入my.cnf

$ mysql

请检查my.cnf通常在哪个,/etc/mysql/或者如果您有覆盖,您可以在 中找到它~/.my.cnf。只需删除userand password

看到这样的东西:

user=root
password=35620fhgf8025ec31ffd2c1
host=127.0.0.1
于 2013-11-26T12:09:06.867 回答
1

在运行 MariaDB 的 Debian 9 上运行 mysql_secure_installation 后,我遇到了这个问题。Gazzar 在 2017 年 10 月 14 日对“无法以 mysql 用户 root 登录...”的回答,帖子1让我用这个 sql 语句查看了 mysql.users 表上的插件字段:

从 mysql.user 中选择用户、主机、插件;

如果您看到“auth.socket”(在 mysqldb 上)或“unix.socket”(mariadb),您可以尝试使用如下更新语句将条目修改为“mysql_native_password”:

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE User = 'root';

进行此更改后,我可以使用以下命令从任何帐户登录:

mysql -u 根目录 -p

只要我输入了正确的密码。如果我使用命令:

须藤 mysql

我仍然被要求输入root密码。

于 2019-01-07T06:38:43.533 回答
0

你可以使用这个命令来访问你的 MySQL 命令。

sudo mysql
于 2021-10-19T08:14:27.010 回答