【问题标题】:Access denied to MySQL remote connection attempt using SSL使用 SSL 拒绝访问 MySQL 远程连接尝试
【发布时间】:2015-05-05 17:24:31
【问题描述】:

我已经为 SSL 设置了一个 MySQL 服务器 v5.5.41,我正在尝试远程连接它。我已经创建了 SSL 证书、密钥、创建了用户并授予了如下权限:

GRANT SELECT ON mydb.* TO 'myuser'@'xxx.xxx.xxx.xxx' require x509;

我已经更新了服务器上的my.cnf 文件,例如:

ssl-ca   = /etc/mysql/certs/ca.pem
ssl-cert = /etc/mysql/certs/server-cert.pem
ssl-key  = /etc/mysql/certs/server-key.pem

我对客户端 pem 文件(和 ca.pem)做了同样的事情,将它们添加到 my.cnf(在 client 部分下)。我还更新了(Linux)/etc/apparmor.d/usr.sbin.mysqld,因为我将我的 pem 文件放在我创建的新目录中(certs)。

一切正常!除非我重复为我的本地开发机器创建客户端 pem 文件和用户/权限的过程。我所做的一切都完全相同,但是当我尝试连接时,我得到:

错误 1045 (28000): 用户 'testuser'@'xxx.xxx.xxx.xxx' 的访问被拒绝(使用密码:YES)

我在 mysql 服务器上创建了testuser,并以与以前完全相同的方式授予权限(通过查询数据库进行验证)。客户端pems和ca.pem在盒子上,cnf文件已经更新。我已经重新启动了 MySQL。我用来连接服务器的密码肯定正确。

我能想到的唯一不同的是,当我创建客户端证书时,我不知道应该为通用名称输入什么。在另一种情况下,它正在工作,那台机器是一个 Web 服务器,所以我使用的通用名称是域。对于我的开发机器,我只是使用了运行hostname 命令获得的通用名称。如果这是问题所在,公用名应该是什么?

【问题讨论】:

    标签: mysql ssl openssl


    【解决方案1】:

    问题的原因是因为我不小心放了这几行:

    ssl-cert = /etc/mysql/certs/client-cert.pem
    ssl-key  = /etc/mysql/certs/client-key.pem
    

    ...在我的本地开发机器上的 [mysqld_safe] 部分而不是 my.cnf 中的 [client] 部分,所以这里没有固有的 MySQL 或 SSL 问题(尽管如果我没有写这个问题的话我可能需要更长的时间才能发现这一点)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      • 1970-01-01
      • 2015-10-10
      • 2015-03-11
      相关资源
      最近更新 更多