![通过 SSH 隧道进行 MySQL 无密码访问 - 拒绝用户“root”@“localhost”访问](https://linux22.com/image/1022779/%E9%80%9A%E8%BF%87%20SSH%20%E9%9A%A7%E9%81%93%E8%BF%9B%E8%A1%8C%20MySQL%20%E6%97%A0%E5%AF%86%E7%A0%81%E8%AE%BF%E9%97%AE%20-%20%E6%8B%92%E7%BB%9D%E7%94%A8%E6%88%B7%E2%80%9Croot%E2%80%9D%40%E2%80%9Clocalhost%E2%80%9D%E8%AE%BF%E9%97%AE.png)
我安装了一个新的 MySQL 8 服务器。全新、干净,直接从包装中取出。现在我想使用 DBeaver(一种 GUI 工具)连接到它。它具有 SSH 隧道的安全功能。隧道有效。我使用私钥通过 SSH 连接。
然后我尝试以 root 身份使用 DBeaver(通过隧道)连接到本地主机,结果出现了“拒绝用户‘root’@‘localhost’访问”的错误消息。
这是为什么?当我以 root 身份使用 putty 通过 SSH 连接到服务器,然后输入 mysql 时,一切正常。我拥有完全访问权限。
顺便说一句,我尝试在 DBeaver 配置中使用“127.0.0.1”而不是“localhost”,但没有帮助。
这是我的 mysql.user 表:
mysql> select host, user from user;
+-----------+------------------+
| host | user |
+-----------+------------------+
| localhost | debian-sys-maint |
| localhost | mysql.infoschema |
| localhost | mysql.session |
| localhost | mysql.sys |
| localhost | root |
+-----------+------------------+
知道如何配置访问权限吗?或者也许我必须设置密码?但是为什么它在终端中有效?
答案1
您无法root
从服务器外部使用。这是 MySQL 故意为之,因为人们会(太频繁地)建立一个带有 MySQL 后端和漏洞百出的前端的网站,使用简单的密码,然后通过多种方式获得 pWn3d……
一种快速的方法是创建另一个帐户来处理所有管理工作,然后使用授权选项授予所有权限。该过程如下:
CREATE USER 'harry'@'%' IDENTIFIED WITH mysql_native_password BY 'superSecretPassword!123';
GRANT ALL ON *.* TO 'harry'@'%' WITH GRANT OPTION;
问题解决了