2

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

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

在我尝试运行时执行此语句后mysql -ussluser -pssluser -P3430 --ssl-key=,它显示以下错误:Can't connect to MySql server on 'localhost' (10061)

我尝试使用 连接到 mysql mysql -ussluser -pssluser,但它显示:Access denied for user 'ssluser'@'localhost' (using password: YES)

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

请注意,我在使用GRANT atetementmysql -ussluser -pssluser 之前执行了并且能够连接到. 我在这个时间点执行(应该启用 SSL ???)。mysqlmysql> CHANGE MASTER TO MASTER_SSL=1;

另外,如果我尝试,SHOW GRANTS FOR 'ssluser'@'localhost';
我会得到

GRANT ALL PRIVILEGES ON *.* TO \'ssluser\'@\'localhost\' IDENTIFIED BY PASSWORD \'*C56A6573BEE146CB8243543295FD80ADCE588EFF\' REQUIRE SSL WITH GRANT OPTION

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

编辑1

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

have_openssl    DISABLED
have_ssl        DISABLED

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

Ssl_cipher  _________

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

4

1 回答 1

0

您没有提供有关服务器或客户端操作系统的任何信息,也没有提供可执行文件的来源,也没有提供 DBMS 的配置方式。

mysql -ussluser -pssluser -P3430 --ssl-key=

IIRC,当您设置用户帐户以提供客户端证书进行身份验证时使用 ssl-key 选项(GRANT....REQUIRE X509;)。在这种情况下,您需要给它一个客户端证书文件作为参数。

但是您只是说它应该使用 SSL - 即客户端对于 SSL 目的是匿名的。但是客户端仍然需要验证服务器 - 因此 mysql 应该以--ssl-ca=ca-cert.pem或 --ssl-capath=directory_name 启动。

您还需要确保为服务器配置了 SSL 支持 - ini 文件或启动脚本应该包含对它将使用的证书的引用以及它处理 SSL 连接的端口。此外,必须将 SSL 支持编译到二进制文件中,并且任何相关的共享对象文件都可用。如果配置显示 SSL 但 DBMS 不能执行 SSL,那么您应该从服务器日志中获得一些指示。

于 2013-03-12T12:50:22.120 回答