ユーザー 'root' @ 'localhost'のMySQLアクセスが拒否されました


24

私のサーバーでは、MySQLにアクセスしようとするたびにエラーが発生します。

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

私が試してみるmysqladmin -u root -p password

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

Ubuntuサーバー12.04でMySQLにアクセスするにはどうすればよいですか?


1
コマンドラインでパラメーターとしてパスワードを入力しないようにしてください。他のユーザーはプロセスリストを介してパスワードを見つけることができます。プログラムに直接入力するか、キーを使用する方がはるかに良い
Amias

構文-p passwordは間違っています-ppassword。そうする必要がありますが、推奨されません。さらに詳しい情報:stackoverflow.com/questions/5131931/...
Melebius

このエラーの考えられる原因とこのエラーを修正する回避策については、このページを確認してください。rathishkumar.in/2017/04/…。あなたを助けるかもしれません。
rathishDBA

回答:


12

n localhostを実行している場合は、ターミナルで次のコマンドを入力します。

mysql -u root -p

外部サーバーを使用している場合は、ホストIP(xxx.xxx.xxx.xxx)も入力します。

mysql -hxxx.xxx.xxx.xxx -uroot -p

パスワードの入力を求められます。パスワードを入力すると、MySQLプロンプトにアクセスできます。

MySQLパスワードをリセットする方法については、この回答をご覧ください。


私がでましたが、私はまだパスワードを変更したり、選択した方法がわからない
user253867

私がリンクした回答5.xでは、最後に使用しているMySQLサーバーのバージョンに置き換える必要があります。私は5.5を使用しているので、コマンドはsudo dpkg-reconfigure mysql-server-5.5
Parto

9
だから、問題はOPが見ることAccess denied for user 'root'@'localhost'です。を呼び出すことをお勧めしmysql -u root -pます。このコマンドの結果は次のとおりAccess denied for user 'root'@'localhost'です。
phil294

5
sudo mysql -u root -p私のために働くが、そうでmysql -u root -pはない
イヴァンブラック

7

更新しても同じ症状が発生しますが、修正するには(mysqlを強制終了して--skip-grant-tablesで再起動してから)実行します

update mysql.user set plugin = '';

更新プロセスでは、この列を「unix_socket」に設定します。私はそれが何を成し遂げるべきかを知りませんが、私にとってそれはすべてを壊します。


これにより、すべてを試行した後、Ubuntu 16 LTSでの私の問題が解決されます。権限、グループユーザー。ありがとう
-onalbi

はい、強化スクリプトを実行しましたが、プラグインが変更されたmysql_socketため、使用するように設定されていたものはすべて機能しPASSWORD('xxxxxx')ませんでした。
TheVillageIdiot

4

mysqlのパスワードを設定します

sudo dpkg-reconfigure mysql-server-5.x

ターミナルを開いて入力します

mysql -uroot -p

パスワードを入力してEnterキーを押します


4

私はこれで問題を解決しました:

sudo apt-get remove --purge mysql-server mysql-client mysql-common
sudo apt-get autoremove
sudo apt-get autoclean
sudo apt install mysql-server

非常に責任があります。このソリューションでは、MySqlサーバーとそのデータをすべて削除しています。


私にはうまくいきません。
イヴァンブラック

!! 非常に責任があります。このソリューションでは、MySqlサーバーとそのすべてのデータを削除しています。
マティスユルゲリス

4

Ulrich Metzgerと同じように、マシンをUbuntu 16.04およびMysql-server-5.7にアップグレードした後、plugin列が変更されたため、rootでログインできませんでした。

sudo dpkg-reconfigure mysql-server-5.7+削除+パージ+クリーニングで問題が解決しませんでした。

mysqlサービスを停止する必要がありました。

# sudo service mysql stop

次に、--no-grant-tablesオプションを指定してmysqlデーモンを再起動します。

# sudo mysqld_safe --no-grant-tables &

次に、別のターミナルで、コマンドmysqlでmysqlコンソール(現在は認証を必要としません)に入り、SQL UPDATEを介してパスワードとプラグインの列を更新します。

UPDATE mysql.user 
  SET authentication_string=PASSWORD(''), 
      plugin='mysql_native_password'
WHERE User='root' AND Host='localhost';

最後に、mysqld_safeコマンドを強制終了し、mysqlサービスを再起動して、通常どおりmysqlに接続します。

# sudo service mysql start
# mysql

2

ubuntu 14.4LTSから16.4LTSにアップグレードした後、mysqlユーザーテーブルのプラグイン列のエントリが間違っているため、mysql rootユーザーはこれ以上ログインできませんでした。アップグレードはroot @ localhostユーザーのプラグイン値をauth_socketに設定しますが、mysqlネイティブパスワード暗号化を以前に使用した場合は、正しいエントリはmysql_native_passwordでなければなりません。


これは私のために働いているものであり、問​​題の根本のようです。アンインストールと再インストールは、「問題」を修正するために何もしません。
SteveFromAccounting
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.