与MySQL集成SSL - 拒绝访问(Integrating ssl with mysql - A

2019-08-17 14:08发布

我试图建立ssl用于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”的(使用密码:YES)
我使用的是3306这里是我的默认端口。

这怎么能说我已经执行GRANT语句访问被拒绝

注意

  • 我执行mysql -ussluser -pssluser使用GRANT语句之前 REQUIRE SSL ,我是能够连接到mysql

  • 如果我尝试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 DISABLED

  • 当我使用这个SHOW STATUS LIKE 'Ssl_cipher'; 我得到

    Ssl_cipher _________

  • 我已创建的所有服务器和客户端证书 ,并把他们安置在certs目录中mysql server的根目录。

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

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

Answer 1:

我今天有一个类似的错误消息挣扎,这里是我发现的。

  1. 对于GRANT“要求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'@'%';


文章来源: Integrating ssl with mysql - Access Denied