Mysqlデータベースとやり取りするために、php Webページで使用される関数をいくつか作成しました。サーバーでテストすると、次のエラーが表示されます。
"Connect failed: Access denied for user 'root'@'localhost' (using password: YES)"
(XAMPPを使用して)PCで使用でき、サーバーのコマンドラインを使用してデータベースのテーブル間を移動できます。ただし、Webページは接続に失敗します。パスワードを確認しましたが、結果はありません。それは正しいです(そうでなければ、コマンドラインからmysqlにログインできませんでした)。
関数の呼び出しは次のとおりです。
$conn = new mysqli("localhost", "root", "password", "shop");
サーバーに何か設定する必要がありますか?ありがとう
編集:PHPバージョン5.3.3-7 + squeeze1 mysqlバージョン:5.1.49-3両方のDebian
この方法で解決しました:rootユーザー名でログインしました
mysql -u root -p -h localhost
で新しいユーザーを作成しました
CREATE USER 'francesco'@'localhost' IDENTIFIED BY 'some_pass';
その後、データベースを作成しました
CREATE DATABASE shop;
このデータベースの新しいユーザーに権限を付与しました
GRANT ALL PRIVILEGES ON shop.* TO 'francesco'@'localhost';
次に、ルートからログアウトし、新しいユーザーでログインしました
quit;
mysql -u francesco -p -h localhost
スクリプトを使用してデータベースを再構築しました
source shop.sql;
これで終わりです。今度はphpからの呼び出しで問題なく動作します
$conn = new mysqli("localhost", "francesco", "some_pass", "shop");
お時間をいただきありがとうございます:)
Root @ localhostのデータベースにユーザーアカウントエントリはありますか? MySQLでは、ホストごとに異なるユーザーアカウント権限を設定できます。接続しているホストと同じ名前の複数の異なるアカウントが存在する場合があります。最も一般的なのは[email protected]とroot @ localhostです。これらは異なるパスワードと許可を持つことができます。 root @ localhostが存在し、必要な設定があることを確認してください。
あなたの説明に基づいて、これが問題であることを賭けたいと思います。別のPCからの接続にはroot @ localhostとは異なるアカウントを使用し、コマンドラインは[email protected]を使用して接続すると思います。
これまで述べてきたことから、PHP5.3のMySQLドライバーが古いMySQLバージョン4.1への接続に問題があるという問題のように思えます。 http://www.bitshop.com/Blogs/tabid/95/EntryId/67/PHP-mysqlnd-cannot-connect-to-MySQL-4-1-using-old-authenticationをご覧ください。 aspx
ここにいくつかの有用な回答を含む同様の質問があります 古い認証を使用してMySQL 4.1+に接続できません
SELECT `User`, `Host`, Length(`Password`) FROM mysql.user
これにより、古いパスワードを持つアカウントの場合は16、新しいパスワードを持つアカウントの場合は41が返されます(パスワードをまったく持たないアカウントの場合は0も返されます。 MySQLフロントエンドのユーザー管理ツールを使用する(存在する場合)または
SET PASSWORD FOR 'User'@'Host'=PASSWORD('yourpassword');
FLUSH Privileges
私もこの問題を抱えていました。しかし、これは別の理由によるものです。パスワードは文字$
で始まりました... $MyPassword
私はそれを#MyPassword
に変更し、問題は解決しました。
先端:
サーバーに接続できない場合は、pidとソケットファイルをコメントアウトします。mysqlは誤ったpidまたはソケットファイル、あるいはその両方で接続している可能性があるため、サーバーにコマンドラインで接続しようとすると 「見える」 誤ったpid/socketファイルで...
###サーバーに接続できない場合、pidおよびソケットファイルをコメントアウトします。
#pid-file =/var/run/mysql/mysqld.pid #socket =/var/lib/mysql/mysql.sock
PHPmyAdmin(WAMP)で特権を編集します。パスワードとユーザー名が作成されていないことに注意してください。作成または編集して、PHPのSQL接続で動作するようにします。うまくいけばいい
パスワードが設定されておらず、引数としてパスワードを渡している可能性があります。接続中にパスワード引数を省略してみてください。
ほとんどの場合、ユーザーを適切に識別していません。 root @ localhost。 MAMPが使用しているMysqlバージョンを選択します。
/Applications/MAMP/Library/bin/mysqldump -uroot -p db_name > test_db_dump.sql
私は実際に自分のコンピューターにエイリアスを書いたので、binディレクトリへの行き方を覚える必要はありません。
alias mysqldumpMAMP='/Applications/MAMP/Library/bin/mysqldump'
これを実行することができます:
mysqldumpMAMP -uroot -p db_name > test_db_dump.sql
別名をbashプロファイル~/.bash_profile
または~/.bash_rc
に保存できます
簡単です。
xamppコントロールパネルを開きます->構成-> my.iniをメモ帳で編集します。これを下に追加してください[mysqld]
skip-grant-tables
保存する。 Apacheとmysqlを起動します。
お役に立てば幸いです