7

我正在尝试通过引用thisssl来进行设置。 我能够完成前 3 个步骤,但第 4 个步骤有问题,如下所示:mysql

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'的访问被拒绝(使用密码:YES)
我在这里使用3306,因为它是我的默认端口。

当我已经执行了GRANT语句时,它怎么能说拒绝访问。

注意

  • 我在使用GRANT语句mysql -ussluser -pssluser 之前执行了并且我能够连接到.REQUIRE SSLmysql

  • 如果我尝试SHOW GRANTS FOR 'ssluser'@'localhost';
    我得到

    GRANT ALL PRIVILEGES ON *.* TO \'ssluser\'@\'localhost\' IDENTIFIED BY PASSWORD \'*C56A6573BEE146CB8243543295FD80ADCE588EFF\' REQUIRE SSL WITH GRANT OPTION
    
  • 在执行GRANT语句之前,我能够通过ssluser连接到工作台。但现在它拒绝访问错误。

  • 当我使用show global variables like 'have_%ssl';我得到

    have_openssl 已禁用 have_ssl 已禁用

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

    ssl_cipher _________

  • 我已经创建了所有服务器和客户端证书并将它们放在根目录certs内的目录中。mysql server

我从几天开始尝试,但一无所获。任何帮助表示赞赏。

我是第一次这样做。谁能指导我完成详细的程序来做到这一点?

4

1 回答 1

8

我今天遇到了类似的错误消息,这就是我发现的。

  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 并允许使用客户端进行身份验证的选项。

以下是我用来设置新用户的确切步骤:

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'@'%';
于 2014-01-29T16:11:47.320 回答