web-dev-qa-db-ja.com

エラー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'エラーも発生しました。これは、スクリプトをインストールしようとしたときに発生するエラーです:Centos6の実行

enter image description here

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

編集:

なぜ私が最初に見回さないのか疑問に思うなら、私は周りを見回しました!私のように問題を抱えている人を見つけることができません。

編集2:

MySQLを正常にインストールしました。戻ってもう一度やり直したいと思ったので、インストーラーはうまくいきました。しかし、上の画像に示されているroot @localhostエラーが発生します。構成が「root」@「localhost」を魔法のように使用していないことを確認しました。

2
Travis

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

mysql -u root -pを使用して、覚えて推測してみてください。運が悪い場合は、MySQL構成を削除して新たに開始する方法をGoogleで検索してください。

1
Envite

MySQLは「localhost」と「127.0.0.1」を異なる方法で処理します。 1つ目は、/var/lib/mysql/mysql.sockなどでUnixソケット接続を実行するために使用されます。したがって、mysql.userテーブルに2つの異なるGRANT命令が必要です(少なくとも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」としてインストールしようとしていることは明らかです。スクリプトまたはインストーラー構成を編集できない場合は、一時的に rootパスワードを無効にすることでそれを処理できます。

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

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

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

これはインストール後にスクリプトが何をするかの問題を解決しません。 stilllocalhostでrootを使用し、stillを使用する可能性がありますパスワードなし。そのため、パスワードをリセットするとすぐに機能しなくなります。スクリプトの構成でrootとlocalhostへの参照を見つける必要があります(これらは別々に指定できます):次のようなものが必要です

user = root
Host = localhost
dbname = somedb

または多分

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

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

0
LSerni

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

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

2)mysqlを削除します
#rpm -e 'プログラム'

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データベースにアクセスするだけです。

0
HuangFelix