繁体   English   中英

MySQL Workbench - 没有端口转发的“拒绝访问”

[英]MySQL Workbench - 'Access Denied' without port forwarding

我在我的 2011 macbook pro 上运行 mysql 工作台。 我用它连接到远程 ubuntu 服务器上的 mysql 数据库。 我能够毫无问题地从我的 macbook pro 连接到远程服务器上的 mysql 数据库,直到我不得不在我的 mac 上进行硬重启。 之后我会得到下面的错误。

但是,一旦我在我的 mac 上为指定用户使用下面的命令进行端口转发,它就会使用 mysql 工作台连接到远程服务器上的数据库,没问题。 关于从我的 Mac 连接到远程服务器上的数据库的问题,这告诉我们什么? 我不想为我想从我的 mac 登录的每个用户转发端口。 有没有人建议如何解决这个问题?

命令:

ssh -N -f -L localhost:3306:localhost:3306 username@192.168.50.122

以前的错误:

Failed to connect to MySQL at xxx.xxx.xx.xxx:3306 with user username Access denied for user 'username'@'xxx.xxx.xx.xxx' (using password: YES)

更新:

当我尝试查找地址为 ip 的用户名的授权时,我没有找到它们并收到以下错误消息。 当我尝试查找 sql_show_grants 表时,我收到另一条错误消息。 当我尝试使用“%”查找相同的用户名时,我在下面找到了所有授权。 那么用户仍然无法从任何 ip 连接是否有意义? 还有什么我需要做的吗?

show grants for 'username'@'xxx.xxx.xx.xxx';
ERROR 1141 (42000): There is no such grant defined for user 'username' on host 'xxx.xxx.xx.xxx'



SELECT sql_grants FROM common_schema.sql_show_grants;
ERROR 1049 (42000): Unknown database 'common_schema'





show grants for 'username'@'%';
+--------------------------------------------------------------+
| Grants for username@%                                      |
+--------------------------------------------------------------+
| GRANT USAGE ON *.* TO `username`@`%`                       |
| GRANT ALL PRIVILEGES ON `finances`.* TO `username`@`%`     |
| GRANT ALL PRIVILEGES ON `geographical`.* TO `username`@`%` |
| GRANT ALL PRIVILEGES ON `realestate`.* TO `username`@`%`   |
| GRANT ALL PRIVILEGES ON `sandbox`.* TO `username`@`%`      |
| GRANT ALL PRIVILEGES ON `stocks`.* TO `username`@`%`       |
+--------------------------------------------------------------+

您尝试连接的帐户无权从您的客户端 IP 地址访问服务器。 如果您使用 SSH 端口转发,则您是从本地主机(从服务器到服务器)连接的,因此会应用不同的权限方案。

在MySQL服务器上,以管理员身份启动一个mysql shell,运行

SHOW GRANTS FOR 'username'@'xxx.xxx.xx.xxx'

(将 'username'@'xxx.xxx.xx.xxx' 替换为错误消息中显示的内容)。

如果它没有显示任何结果,则您的用户没有相应 IP 地址的任何权限,您需要更改或创建它。 如果它确实显示权限,请确保 SELECT 在它们下面。

如果您找不到您的用户,请尝试查看所有授权:

SELECT sql_grants FROM common_schema.sql_show_grants;

如果您说它以前有效,则可能是原始用户添加了动态 IP 地址,该地址在您的客户端重新启动后发生了变化。 如果是这种情况,并且最后一条语句显示您的用户使用错误的 IP 地址,请使用以下内容更新它:

RENAME USER 'username'@'ipaddress1' TO 'username'@'ipaddress2';

如果您使用的是动态 IP 地址并希望从所有源地址授予用户访问权限,则您可能需要考虑使用“%”而不是“ipaddress2”。 这是否是安全问题取决于您的环境。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM