【问题标题】:MySQL database SSL connection using PHP使用 PHP 的 MySQL 数据库 SSL 连接
【发布时间】:2012-05-28 21:30:15
【问题描述】:

我有一个数据库设置非远程服务器。

我想要做的是使用 PHP 建立连接。

服务器上的所有设置都正常,因为我使用 MySQL 工作台使用以下详细信息对其进行了测试: 主机名:xxx.xx.xx.xxx 端口 - 空白,默认为:3306

在工作台的高级选项卡中选择了“如果可用,请使用 SSL”。连接测试成功。

虽然当我尝试使用简单的 mysq_connect('IP','user','pass') 进行连接时,我收到以下错误: 第 2 行:$c = mysql_connect('IP','USER','PASS');

警告:mysql_connect() [function.mysql-connect]: 过早结束 C:\wamp\www\sql\index.php 中的数据(mysqlnd_wireprotocol.c:553)在线

警告:mysql_connect() [function.mysql-connect]:OK 数据包比预期的短 1 个字节>在第 2 行的 C:\wamp\www\sql\index.php 中

警告:mysql_connect() [function.mysql-connect]:mysqlnd 无法使用旧的不安全身份验证连接到 MySQL 4.1+。请使用管理工具通过命令 SET PASSWORD = PASSWORD('your_existing_password') 重置密码。这将在 mysql.user 中存储一个新的、更安全的哈希值。如果此用户在 PHP 5.2 或更早版本执行的其他脚本中使用,您可能需要从第 2 行 C:\wamp\www\sql\index.php 中的 my.cnf 文件中删除 old-passwords 标志

我试图建立这种连接已经有好几天了。请帮忙!

【问题讨论】:

  • 您是否按照底部的说明重设了密码?
  • 不,我没有,但为什么要使用 MySQL 工作台连接?
  • Dom,即使您的 mysql 和 PHP 存在版本不兼容,也可能导致此错误。您使用的是哪个版本?

标签: php mysql ssl mysql-connect


【解决方案1】:

你在这里php manual mysql connect

查看客户端标志

【讨论】:

    【解决方案2】:

    快速指南:

    1. 打开服务器的my.cnf(一般在/etc
    2. 注释掉old-passwords = 1
    3. 重启 MySQL
    4. 如有必要,运行mysql_fix_privilege_tables
    5. 使用mysqlclient 实用程序作为root 进行连接
    6. use mysql
    7. update user set password=password('new password') where user='the user'

    然后再试一次

    【讨论】:

    • /etc 中除了 php5/php.ini 什么都没有
    • @Dom 好吧,检查 SELECT PASSWORD('test'); 的输出并确保它是 ehh ... long :) 如果不是,你将不得不寻找 my.cnf
    【解决方案3】:

    试试..

    mysql_connect('IP','USER','PASS', false, MYSQL_CLIENT_SSL);
    

    【讨论】:

    • 我试过了。现在我有以下错误警告:mysql_connect() [streams.crypto]: this stream does not support SSL/crypto in C:\wamp\www\sql\index.php on line 2
    • 您是否已启动并运行 php_openssl 扩展? php.net/manual/en/openssl.installation.php
    猜你喜欢
    • 1970-01-01
    • 2010-10-21
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多