将ssl与mysql集成 - 拒绝访问

时间:2013-03-14 06:43:25

标签: mysql ssl access-denied

我正在尝试通过引用thisssl设置mysql
我能完成前3个步骤,但遇到第4个问题,如下:

GRANT ALL PRIVILEGES ON *.* TO 'ssluser'@'localhost' IDENTIFIED BY 'ssluser' REQUIRE SSL;
FLUSH PRIVILEGES;

然后我重新启动mysql服务器。

当我尝试运行mysql -ussluser -pssluser -P3306 --ssl-key="C:\Program Files\MySQL\MySQL Server 5.5\certs\ca-cert.pem"时执行此语句后,它显示以下错误:访问被拒绝用户'ssluser'@'localhost'(使用密码:是)
我在这里使用 3306 ,因为它是我的默认端口。

当我已执行 GRANT 语句时,如何说拒绝访问

请注意

  • 我使用 GRANT 语句mysql -ussluser -pssluser执行了REQUIRE SSL 之前的mysql ,我能够连接到SHOW GRANTS FOR 'ssluser'@'localhost';

  • 如果我尝试GRANT ALL PRIVILEGES ON *.* TO \'ssluser\'@\'localhost\' IDENTIFIED BY PASSWORD \'*C56A6573BEE146CB8243543295FD80ADCE588EFF\' REQUIRE SSL WITH GRANT OPTION
    我得到了

    show global variables like 'have_%ssl';
  • 在执行 GRANT 语句之前,我能够通过 ssluser 连接到 workbench 。但现在它的访问被拒绝错误。

  • 当我使用SHOW STATUS LIKE 'Ssl_cipher';时,我得到了

    have_openssl禁用 have_ssl DISABLED

  • 当我使用此certs时,我得到了

    Ssl_cipher _________

  • 我已创建所有服务器和客户端证书,并将它们放在mysql server根目录下的{{1}}目录中。

我几天都在尝试但却一无所获。任何帮助表示赞赏。

我是第一次这样做。任何人都可以通过详细程序指导我这样做吗?

1 个答案:

答案 0 :(得分:7)

我今天正在努力解决类似的错误消息,这就是我发现的内容。

  1. GRANT的“REQUIRE SSL”选项仅需要SSL进行连接,并且不需要提供客户端证书。
  2. mysql CLI不像我预期的那样处理SSL。例如,在MySQL 5.5上,--ssl选项似乎并未真正启用SSL传输。
  3. 我必须添加选项--ssl-cipher=DHE-RSA-AES256-SHA:AES128-SHA以使mysql客户端真正使用SSL并允许客户端进行身份验证。
  4. 以下是我用于设置新用户的确切步骤:

    CREATE USER 'ssl-user'@'%' identified by '<password>';
    GRANT USAGE ON *.* TO 'ssl-user'@'%' identified by '<password>' REQUIRE SSL;
    GRANT ALL PRIVILEGES ON `your-database`.* TO 'ssl-user'@'%';