私のサーバーでは、MySQLにアクセスしようとするたびにエラーが発生します。
ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワードを使用:NO)
mysqladmin -u root -p password
を試してみると
ユーザー 'root' @ 'localhost'のアクセスが拒否されました(パスワード:YESを使用)
Ubuntuサーバー12.04でMySQLにアクセスするにはどうすればよいですか?
N localhostを実行している場合は、ターミナルで次のコマンドを入力します。
mysql -u root -p
外部サーバーを使用している場合は、ホストIP(xxx.xxx.xxx.xxx)も入力します。
mysql -hxxx.xxx.xxx.xxx -uroot -p
パスワードの入力を求められます。パスワードを入力すると、MySQLプロンプトにアクセスできるようになります。
MySQLパスワードをリセットする方法については、 this answer もご覧ください。
更新しても同じ症状が発生しますが、修正するには(mysqlを強制終了してから--skip-grant-tablesで再起動して)実行することです
update mysql.user set plugin = '';
更新プロセスでは、この列を「unix_socket」に設定します。私はそれが何を成し遂げるべきかを知りませんが、私にとってそれはすべてを壊します。
Ulrich Metzgerと同じように、マシンをUbuntu 16.04およびMysql-server-5.7にアップグレードした後、mysqlデータベースのplugin
列が変更されたため、rootでログインできませんでした。
Sudo dpkg-reconfigure mysql-server-5.7
コマンドと削除、パージ、およびクリーニングの両方で問題が解決しませんでした。
Mysqlサービスを停止する必要がありました
# Sudo service mysql stop
--no-grant-tables
オプションなしでmysqlデーモンを起動します
# Sudo mysql_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';
最後にmysql_safe
コマンドを強制終了し、mysqlサービスを再起動して、通常どおりmysqlに接続します
# Sudo service mysql start
# mysql
Mysqlのパスワードを設定します
Sudo dpkg-reconfigure mysql-server-5.x
ターミナルを開いて入力します
mysql -uroot -p
パスワードを入力してEnterキーを押します
私はこれで問題を解決しました:
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サーバーとそのすべてのデータを削除する
Ubuntu 14.4LTSから16.4LTSにアップグレードした後、mysqlユーザーテーブルのプラグインカラムのエントリが間違っているため、mysql rootユーザーはこれ以上ログインできませんでした。アップグレードは、root @ localhostユーザーのプラグイン値をauth_socketに設定しますが、mysqlネイティブパスワード暗号化を以前に使用した場合は、正しいエントリはmysql_native_passwordでなければなりません。