2

私はこのことを理解しようと数時間を費やしましたが、うまくいきませんでした。私はこれをグーグルで検索し、stackoverflowでキーワードで検索しました。

というわけで、ここで質問です。パネルとして、DirectAdmin があります。

DirectAdmin に入って MySQL データベースを作成すると、「データベースが正常に作成されました」と表示されます。

また、「このデータをスクリプトに使用してください」と指示します

Host     : localhost (yes, localhost! )
user     : db_user
password : db_password
databse  : db_name

わかった。このデータをphpMyAdminに入力すると、ユーザーとパスワードの両方が機能します。SQL を使用して、phpMyAdmin 経由でデータを操作できます。大丈夫です。

しかし

このデータをスクリプトに入力すると

<?php

$host     = 'localhost';
$password     = 'db_password';
$db           = 'db_name';
$user     = 'db_user';

// I'm aware of PDO and I use this one but PDO isn't installed on my hosting provider
// This is just test to see if connection can be established

if ( ! mysql_connect($host, $user, $password) ){

    die( mysql_error() );
}

つまり、「パスワードを使用して db_user@localhost のアクセスが拒否されました (YES)」ということです。どうしたの?!正しいデータを入力しました!

次に、「localhost」の代わりに自分のサイトのアドレスを使用しようとしました。次にmysql_error()、「mysite.com からの接続は、このホストには許可されていません」と伝えます。

繰り返しますが、phpMyAdmin から次のことがわかります: ユーザー - db_user@localhost(ユーザー名とホストの両方が間違っていないように)

問題は、phpMyAdmin からの接続を許可し、カスタム スクリプトからの接続を許可しないのはなぜですか?

更新 1。私はport(@Bondyeが提案したように)と同様に変更しようとlocalhost127.0.0.1ました。しかし、同じエラーが発生します-Access denied for user 'db_user'@'localhost' (using password: YES)

これはPHP.INIのMySQLセクションです

Active Persistent Links  0  
Active Links  0  
Client API version  5.1.53  
MYSQL_MODULE_TYPE  external  
MYSQL_SOCKET  /tmp/mysql.sock  
MYSQL_INCLUDE  -I/usr/local/include/mysql  
MYSQL_LIBS  -L/usr/local/lib/mysql -lmysqlclient  

Param:              Local Value: Master Value: 

mysql.allow_persistent  Off      Off 
mysql.connect_timeout   60       60 
mysql.default_host      no value no value 
mysql.default_password  no value no value 
mysql.default_port      no value no value 
mysql.default_socket    no value no value 
mysql.default_user      no value no value 
mysql.max_links         5        5 
mysql.max_persistent    0        0 
mysql.trace_mode        Off      Off 



System : FreeBSD

PDO と MySQLi の両方を認識していますが、使用できません。mysql_*作業中の現在のスクリプトには古い関数を使用する必要があります。

前もって感謝します

4

1 に答える 1

1

http://php.net/manual/en/function.mysql-connect.php

ノート:

「localhost」または「localhost:port」をサーバーとして指定すると、MySQL クライアント ライブラリはこれをオーバーライドし、ローカル ソケット (Windows では名前付きパイプ) に接続しようとします。TCP/IP を使用する場合は、「localhost」の代わりに「127.0.0.1」を使用します。MySQL クライアント ライブラリが間違ったローカル ソケットに接続しようとする場合は、PHP 構成と同様に正しいパスを設定し、サーバー フィールドを空白のままにする必要があります。

代わりに mysqli を使用することを検討してください (改善のために i で終わります)

Use of this extension is discouraged. Instead, the MySQLi or PDO_MySQL extension should be used. See also MySQL: choosing an API guide and related FAQ for more information. Alternatives to this function include:

    mysqli_connect()
    PDO::__construct()
于 2012-12-10T14:27:11.543 に答える