エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワード使用: NO)

エラー 1045 (28000): ユーザー 'root'@'localhost' のアクセスが拒否されました (パスワード使用: NO)

そのため、最初は phpmyadmin で使用するデータベースを作成しようとしたときにこのエラーが発生しました。ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

いくつかの場所を調べたところ、昨日サーバーを再インストールしたばかりなので、mysql を再インストールしてみるようにと友人から言われました。

そこで、mysql を再インストールすることにしました。すると、次のエラーが表示され、インストーラーを実行することすらできなくなりました。ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

'root'@'localhost'作成したデータベースでスクリプトをインストールしようとしたときにもエラーが発生しました。スクリプトをインストールしようとしたときに表示されたエラーは次のとおりです: Centos 6 を実行中

ここに画像の説明を入力してください

PHP 5.3.3 (私が使用しているスクリプトは Ioncubed ですが、PHP 5.4 は必要ありません)。

編集:

なぜまず周りを見回さないのかと疑問に思うなら、私は周りを見回しました。私と同じような問題を抱えている人を見つけるのは運が悪かったのです。

編集2:

これで MySQL のインストールに成功しました。戻ってもう一度試してみたところ、インストーラーは問題なく動作しました。しかし、上の画像に示されている root@localhost エラーがまだ表示されます。設定で「root」@「localhost」が魔法のように使用されていないことは既に確認しました。

答え1

データベースの設定では root@localhost が使用され、そのパスワードは初めてインストールしたときに選択されました。これはシステムの root パスワードではありません。MySQL の root とシステムの root は異なるアカウントであり、パスワードも異なる場合があります。

覚えておいて、を使用して推測してみてくださいmysql -u root -p。うまくいかない場合は、MySQL 構成を削除して最初からやり直す方法を Google で検索してください。

答え2

MySQL は「localhost」と「127.0.0.1」を別々に扱います。前者は Unix ソケット接続を実行するために使用されます/var/lib/mysql/mysql.sock。したがって、テーブルには 2 つの異なるGRANT命令が必要ですmysql.user(少なくとも私は OpenSuSE Linux でそうしています。Windows などでは状況が異なる場合があります)。

(root として MySQL 接続)

GRANT ALL PRIVILEGES (*or privilege list*) ON yourdb.* TO user@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES (*or privilege list*) ON yourdb.* TO [email protected] IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

すると、スクリプトが実際に「root@localhost」としてインストールしようとしていることは明らかです。スクリプトまたはインストーラーの設定を編集できない場合は、次のように対処できます。一時的にルートパスワードを無効にする:

USE mysql;
UPDATE user SET Password = NULL WHERE User='root' AND Host='localhost';
FLUSH PRIVILEGES;

...安全性を高めるために、MySQLからログアウトしないこれを実行した後、インストールが完了したら、ルートパスワードをリセットする必要があります。

GRANT ALL PRIVILEGES ON mysql.* TO root@localhost IDENTIFIED BY 'newpassword';
FLUSH PRIVILEGES;

これでは問題は解決しないインストール後にスクリプトは何をしますかおそらくそうなるだろうまだローカルホストでルートを使用し、まだパスワードは使用しないでください。パスワードをリセットするとすぐに機能しなくなります。スクリプトの設定で、rootとlocalhostへの参照(別々に指定することもできます)を見つける必要があります。次のようなものがあるはずです。

user = root
host = localhost
dbname = somedb

または多分

'username' => 'root',
"hostaddr" => "localhost",
...

変更します。新しいステートメントを発行するだけで、MySQL に新しいユーザーを作成できますGRANT

答え3

通常の場合、スタックオーバーフロー役に立ちます。ただし、異なるバージョンの競合が発生した場合、パスワードを正常にリセットできません。この場合は、mysql を再インストールしてください。それが私が出会ったものです!!

手順は次のとおりです: 1) インストールされているmysqlを見つけます
# rpm -qa|grep mysql

2) mysqlを削除します
#rpm -e 'the programe'

3) lib&include を削除します
#rm -rf /usr/lib/mysql
#rm -rf /usr/include/mysql

4) mysql の日付を削除するか、バックアップします。
#mv /var/lib/mysql ~/mysql_backup

5)mysqlを再インストールする
#yum install mysql mysql-server

6) mysql サービスを起動して試してください。
#chkconfig mysqld on
#service mysqld start
#mysql -uroot -p
--この手順でインストールが成功した場合、パスワードは null になります。Enter キーを押して、mysql データベースにアクセスします。

関連情報