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

MySQLの画像

    前に言ったように、blob ただし、SanHoloが指摘しているように、これは実際にはパフォーマンス面ではなく、データベースが非常に高速に拡張される可能性があるため、最終的には問題が発生します。

    データベースのファイル名にインデックスを付けて、サーバーにファイルを保存してみませんか。 ?

    このようなことを許可しない主な理由は、セキュリティの問題です。すべてのユーザーがコンテンツを表示または取得できないようにすることで、本当に自分の基盤をカバーしようとしている場合は、2つの選択肢があります。

    オプションA) Flickrのように、ファイルに一意の識別できない名前を付けます。ファイルの名前には2つのハッシュが含まれます。ユーザーハッシュとファイルハッシュ。 2番目のハッシュは秘密であり、それを取得できる唯一の方法は試行錯誤によるものです。 Flickrにあるこのファイル をご覧ください。 。ユーザー保護されています(家族のみが表示できます)が、URL自体が保護として機能するため、問題なくアクセスできます: http://farm2.static.flickr.com/1399/862145282_bf83f25865_b.jpg 、ランダムにハッシュを生成しようとして有効なハッシュを見つけたとしても、それが誰からのものかわからないため、匿名性によって隠されてしまいます。

    オプションB) サーバー側の技術を使用してアクセスを制限します。この方法はより安全ですが、サーバーにとってより高価です。 session_permissionsなどに基づいてファイルへのアクセスを許可/拒否するスクリプトを設定します。次のようなものにアクセスすることで呼び出される次のコードを見てください。

    http://yourserver.com/getprotectedfile.php?filename=213333.jpeg

    session_start();
    
    // logic to verify the user is ok
    if($_SESSION['user_access']!=true) {
        exit('user not allowed here');
    
    // WATCHOUT! THIS IS NOT SECURE! EXAMPLE ONLY.
    // on a production site you have to be sure that $filename will not point to a system file
    $filename = $_GET['filename'];
    
    // gets the file and outputs it to the user
    header('Content-type: image/jpeg');
    header('Content-Length: '.filesize($filename));
    readfile($filename);
    


    1. データベースインスタンスの状態を監視する方法

    2. SQL Serverレプリケーションでは、サーバーに接続するために実際のサーバー名が必要です

    3. 古いパスワードによる認証はサポートされなくなりました。4.1スタイルのパスワードを使用してください

    4. where句の有無にかかわらず複数のテーブルを持つmysqldump