質問

私はphpMyAdminので罰金接続できるにもかかわらず、PHPスクリプトを使用してMySQLに接続できないようです。私は、パスワードを持つユーザーを作成し、それをデシベルのための適切privelegesを与えたが、毎回それはアクセス拒否を言って死んで接続しています。私はWindows XPのボックスの上にXAMPPを使用しています。ファイアウォールはすべて無効になっている、と私は、ユーザー名のNADパスワードが正しいかチェックしました。ここでは、コードがあります:

$conn=mysql_connect('localhost','westbrookc16','megadots') || die (mysql_error());

ユーザ名は、特定のフォーマットか何かにする必要がありますか?

役に立ちましたか?

解決

私はここでの問題は、それが本当に推測以上ではないのですけれどもあなたは、それを許可されたホストであることを予感しています。あなたがアクセスmyuser@'127.0.0.1' またはサーバの実際のIPアドレスを付与する場合は、ホストとしてlocalhostを使用して接続することはできません。これは、「ローカルホスト」がホストとして指定された場合、PHPがあなたの代わりにネットワークソケットのUnixソケットを使用することを想定し、そのコンテキストで127.0.0.1はlocalhostのと同じではないという事実によるものです。

にmysql_connect()の手動エントリから

  

注: "localhost" を指定するときはいつでも   または:サーバーとして「localhostのポート」、   MySQLクライアントライブラリが上書きされます   これとローカルに接続しよう   ソケット(Windows上の名前付きパイプ)。もし、あんたが   TCP / IPを使用する場合は、 "127.0.0.1" を使用   代わりに「localhost」をします。 MySQLの場合は   クライアントライブラリは、に接続しようとし   、あなたは間違ったローカルソケットを設定する必要があります   実行時設定として正しいパス   PHPの設定や休暇中   サーバー]フィールドは空白ます。

が、これは完全に冗長ではありません願っています。 :)

他のヒント

私は1人のMySQLユーザーは、PHP経由でログインし、別のがない場合には、前にこれを見てきました。時にはユーザーでも、コマンドラインからではなく、PHPから働きます。

これは常にエミールは2をrefferingされたものとなっています。 MySQLユーザーは、実際にユーザー/ホストのペアです。これはlocalhostとmycoolhost @ユーザーmegadots @ユーザーmegadotsは、二つの別々のレコードとしてmysql.userテーブルにリストされています。

あなたは、このクエリを実行するコマンドラインからログインすることができます。

SELECT user, host FROM mysql.user

ユーザーとthierホストの完全なリストを確認する必要があります。

あなたが働いているphpMyAdminのユーザーを認識した場合、

、おそらくあなたが使用するホストのホスト欄を見てください。

ホストがこれらのクエリを実行してリセットするために(!全体のMySQLのインストール用privilagesテーブルで、この作業を行うように注意してください)。

update mysql.user set host = 'hostname' 
where user = 'username' and host = 'oldhostname';

flush privileges;
あなたは何よりも優先されますホストとしてユーザー名および%を持つレコードが表示された場合、それらのいずれかのホストとして、ユーザーと%のための複数のレコードがある場合は、

は、それが可能だという%とユーザ名としてそれはログイン時にユーザ名@の%と比較されますので、ホストが誤ったパスワード、あなたはそれが無効だユーザ名@ localhostののパスワードをリセットする方法manytimesどんなにがあります。

Linuxを使用している場合は、PHPとMySQLは、そう、彼らは両方とも接続できる必要があるすべてのライブラリや改造を見つけてダウンロードするにはSynapticパッケージマネージャを使用します。私の問題だけでは実行中のPHPスクリプトはサーバ側で働いていたということでしたが、私は、MySQLに接続するためのPHPスクリプトを使用してみたら、それは私が唯一無地の白ページを見ることが接続されません。その後、私は気づいた私は、PHPがMySQLへCONECTするために使用するMySQLクライアントライブラリを持っていませんでした。私は唯一のMySQLサーバライブラリを持っていました。私はクライアント側のライブラリをインストールし、Apacheサーバを再起動したら、私のPHPスクリプトは、接続は問題がありませんでした。デフォルトではPHP 5には、MySQLクライアント側のライブラリとインストールされていません。

私の場合、それは私が使っていたデータベースを作成するために使用されたユーザーを削除していたなりました。通常、これはエラー「存在しないユーザ指定の定義」を与える必要がありますが、何らかの理由でそれは単に私のPHPコードに拒否された、より一般的なアクセスを返していました。私はまだ、コマンドラインや他のインタフェースを介してログインした理由はわかりません。私の問題を修正するために私が削除されたユーザーを再作成します。

これは、どちらかのタイプミスでしょうか、権限が付与されていません。時にはそれは、これらを見つけるために驚くほど困難なことができます。

私は、phpMyAdminのを使用していますが、 SQLyogのの(無料のコミュニティ版のコピーをダウンロードしていないお勧め素晴らしいです)、その経由でユーザーでログインしてみてください。あなたは問題が診断されたら、スクリプトに戻す/ペーストのユーザー名/パスワードがコピーします。

ちなみにphpmyadminのは結構ですが、SQLyogのようなプログラムは、とにかくチェックアウトするので価値が、一般的に、より便利である - 私はあなたが変換されると確信しています。 SQLyogのは、あなたの好みに非常にされていない場合、他のいくつかの自由と商業の選択肢があります。

  

それをデシベルのための適切privelegesを与えました

どのように? それを許可するときは、ユーザーのためにどのようなホストを使用しましたか?

このは、それが正常に行われている方法です。

GRANT ALL ON mydb.* TO 'someuser'@'somehost' identified by 'password';
FLUSH privileges;

あなたの場合 'somehost' で、おそらく 'localhost' のしなければならないか '127.0.0.1'(他のポストを参照してください)。

構文参照: http://dev.mysql.com/ DOC / refman / 5.1 / EN / grant.html

は、同様の問題を抱えた後、私は「127.0.0.1」を置き換える「はローカルホスト」(Iが正常「ローカルホスト」を使用して端子を介して接続することができたという事実にもかかわらず)トリックをしたことがわかった。

私は同じ問題を抱えていたが、その後、私はあなたが「%」(任意のホスト)とデフォルトの口座に残している場合、パスワードなしで、あなただけのパスワードで接続することはできませんということを考え出しました。私はこの問題は、正確であるが、それらはそれを解決取り除くかわからないです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top