私はこのことを理解しようと数時間を費やしましたが、うまくいきませんでした。私はこれをグーグルで検索し、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が提案したように)と同様に変更しようとlocalhost
し127.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_*
作業中の現在のスクリプトには古い関数を使用する必要があります。
前もって感謝します