sql >> データベース >  >> RDS >> Mysql

PHPはMySqlに接続するときにSSL証明書を無視します

    一見したところ、MYSQLI_CLIENT_SSLを設定していませんでした 接続のオプション。

    if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db', null, MYSQLI_CLIENT_SSL)) { ... }

    更新:
    $mysqli->options(MYSQLI_OPT_SSL_VERIFY_SERVER_CERT, true);を追加してみてください。 $mysqli->ssl_set()の前 。

    また、これは私にとってはうまくいきます:

    <?php
    $pdo = new PDO('mysql:host=ip;dbname=dbname', 'username', 'password', array(
        PDO::MYSQL_ATTR_SSL_KEY    =>'/etc/mysql/ssl/client-key.pem',
        PDO::MYSQL_ATTR_SSL_CERT=>'/etc/mysql/ssl/client-cert.pem',
        PDO::MYSQL_ATTR_SSL_CA    =>'/etc/mysql/ssl/ca-cert.pem'
        )
    );
    $stmt = $pdo->query("SHOW TABLES;");
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    print_r($row);
    ?>
    

    更新2: bad handshakeを受け取る可能性があります 古いスタイルのmysqlパスワード(16バイト長)を使用する場合 )。確認するには、次のクエリを実行します。

    mysql> select length(Password) from mysql.user where User='youruser'
    

    16を受け取った場合 :

    // disable old_passwords:
    mysql> SET @@session.old_passwords = 0;
    
    // update password for user used in PHP script:
    mysql> SET PASSWORD FOR 'existinguser'@'localhost' = PASSWORD('existingpass');
    
    // check if we have a 41 bytes long password:
    mysql> select length(Password) from mysql.user where User='youruser'
    

    そして、PHPスクリプトからの接続をもう一度確認してください。



    1. PHPMySQLインサートが機能しない

    2. 自動インクリメントを2番目の列に挿入します

    3. 挿入できません:エラー:配列値は{またはディメンション情報で始まる必要があります

    4. SQLServerのストアドプロシージャからcsv出力ファイルを作成する方法