为啥mysql客户端不使用--ssl-ca操作可以通过私有IP连接到启用SSL的mysql5.6,但不能通过公共IP?

Posted

技术标签:

【中文标题】为啥mysql客户端不使用--ssl-ca操作可以通过私有IP连接到启用SSL的mysql5.6,但不能通过公共IP?【英文标题】:why mysql client can connect to SSL-enabled mysql5.6 through private IP without using --ssl-ca operation,but can't through Public Ip?为什么mysql客户端不使用--ssl-ca操作可以通过私有IP连接到启用SSL的mysql5.6,但不能通过公共IP? 【发布时间】:2022-01-06 05:50:52 【问题描述】:

在我的 IDC DATACENTER 中,我部署了一个启用 SSL 的 mysql5.6 whih 自签名 CA 和服务器证书。我的用户有 'require ssl' 操作。

================================================ ==================================================== =

MySQL root@[(none)]>select user,host,ssl_type from mysql.user where user='ssl_test2';

|用户 |主持人 | ssl_type |

| ssl_test2 | % |任何|

MySQL root@[(none)]>显示变量,如 '%ssl%';

|变量名 |价值 |

|有_openssl |是的|

|有_ssl |是的|

| ssl_ca | /tmp/ca.pem |

| ssl_cert | /tmp/server-cert.pem |

| ssl_key | /tmp/server-key.pem |

================================================ ==================================================== =

我可以从另一台IDC机器连接到这个mysql,命令:“mysql -u ssl_test2 -p -h [private IP] -P 3306”。一些敏感信息将被隐藏。

================================================ ==================================================== =

[mysql@GP-APS-SET02 ~]$ mysql xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 输入密码: 欢迎使用 MySQL 监视器。命令以 ; 结尾或\g。 您的 MySQL 连接 ID 是 221 服务器版本:5.6.45-log MySQL Community Server (GPL)

版权所有 (c) 2000、2017,Oracle 和/或其附属公司。保留所有权利。

Oracle 是 Oracle Corporation 和/或其 附属公司。其他名称可能是其各自的商标 所有者。

键入“帮助;”或 '\h' 寻求帮助。输入 '\c' 清除当前输入语句。

MySQL risk-yun@[(none)]>\s

mysql Ver 14.14 Distrib 5.7.19,适用于使用 EditLine 包装器的 linux-glibc2.12 (x86_64)

连接 ID:221 当前数据库: 当前用户:xxxxxxxxxxxxxxxxxxxx SSL:使用的密码是 DHE-RSA-AES256-SHA

但是我在云上有一个应用服务器,所以我需要通过公共IP连接到mysql。这样的命令“mysql -u ssl_test2 -p -h [public IP] -P [PORT]” 我会收到错误“ERROR 1045 (28000): Access denied for user xxxxxx (using password: YES)”

如果我在云ECS上提供ca证书,如“mysql --ssl-ca=ca.pem”这样的命令,我可以成功连接mysql,也可以成功ssl加密。

那么我怎样才能通过公共 ip 在没有 ssl-sa 操作的情况下连接到 mysql 呢?为什么?

【问题讨论】:

请改进格式。您的问题不容易阅读/扫描。 【参考方案1】:

alter user ssl_test2@'%' 不需要; 刷新权限; 从 mysql.user 中选择主机、用户

然后: 检查您的 ECS 安全组 firewalld

【讨论】:

"require none" 操作不是我想要的。

以上是关于为啥mysql客户端不使用--ssl-ca操作可以通过私有IP连接到启用SSL的mysql5.6,但不能通过公共IP?的主要内容,如果未能解决你的问题,请参考以下文章

为啥Hive里,要用mysql

mongodb为啥比mysql快

为啥我安装了mysql却打不开呢

vnc 连接linux,为啥不显示桌面?

为啥canvas的效果和别人的不一样

mysql查询in为啥用不上索引