无法从终端以外的应用程序连接到 mysql

无法从终端以外的应用程序连接到 mysql

我无法从 DataGrip 连接到本地 SQL 服务器。但是它可以直接从终端正常工作。

有人知道我做错了什么吗?
我没有设置任何密码,我尝试过不使用密码和使用我的 Ubuntu 用户密码。

尝试从 DataGrip 连接时出现此错误:

The specified user/password combination is rejected: [28000][1698] Access denied for user 'root'@'localhost

它可以像这样在终端上正常工作:

jeggy@jeggy-Lenovo-Z50-70:~$ sudo mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 16
Server version: 5.7.16-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2016, 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> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0,00 sec)

答案1

根据连接来源授予 Mysql 用户访问权限。默认情况下,根访问权限限制为:

  • 127.0.0.1
  • 本地主机

您用于连接的程序未将其自身标识为127.0.0.1或者本地主机。您必须验证其被识别为的 IP 访问权限,然后将其添加到您的授权表中。

您也可以(非常不安全,只应用于测试和验证程序是否能在知道正确 IP 的情况下运行)通过添加授予任何 IP 的访问权限进入 root 的授权表。这至少可以作为临时访问,以便您识别用于访问的 IP 地址。

这些是授予 IP 地址的命令变体:

mysql> GRANT ALL ON *.* TO 'root'@'computer.host.com';
mysql> GRANT ALL ON *.* TO 'root'@'192.168.1.101';
mysql> GRANT ALL ON *.* TO 'root'@'%';

重要的!
不应使用通配符,尤其是对于root。其中提到了信息测试仅此而已。这将使您的计算机变得容易受到来自世界任何地方的计算机黑客的攻击。

为了安全起见,您可以考虑设置一个不同于 root 的名称来授予此访问权限,并让实际用户对可以建立连接的位置有更大的限制。

您可能还必须注释掉bind-address = 127.0.0.1您的配置我的cnf文件。

来自phpmyadmin图形用户界面

或者从 Phpmyadmin 执行以下步骤:

phpmyadmin -> (点击)用户->添加用户->(对于 root 用户点击)
编辑权限->(滚动至)主持人->(输入所需的 IP 地址)->
(点击)

更新:

通过为 Mysql 设置密码,OP 的问题得到了解决(通过聊天)。它最初安装时密码为空。这就是为什么访问 mysql 的唯一方法是使用sudo。在为 mysql 正确添加密码后,访问默认使用默认的 localhost/127.0.0.1 进行访问和 Datagrip 应用程序。

相关内容