$ ./mysqladmin -u root -p ' 編集済み '
パスワードを入力する:
mysqladmin: 'localhost'でサーバーに接続できませんでしたエラー:
'ユーザー' root '@' localhost 'のアクセスが拒否されました(パスワードを使用:YES)'
どうすればこれを修正できますか?
/etc/my.cnf
または/etc/mysql/my.cnf
を開いて編集します。skip-grant-tables
の下に[mysqld]
を追加mysql -u root -p
を使って、mysqlにログインできるはずです。mysql> flush privileges;
を実行ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';
で新しいパスワードを設定しますmysql -u root -p
私が見つけたすべての解決策は必要以上に複雑で、どれも私にとってうまくいきませんでした。これが私の問題を解決した解決策です。 mysqldを再起動したり、特別な権限で起動したりする必要はありません。
Sudo mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
単一のクエリで、 auth_plugin を mysql_native_password に変更し、ルートパスワードを root に設定します(クエリで自由に変更してください)
これでrootでログインできるはずです。より多くの情報は mysqlのドキュメントにあります
( Ctrl + D または exit を入力してmysqlコンソールを終了します)
この問題を修正するために多くの手順を試しました。この問題の可能な解決策には、ナンセンスからセンスを除外するのが難しいソースが非常に多くあります。私は最終的に良い解決策を見つけました ここ :
ステップ1:データベースのバージョンを特定する
$ mysql --version
MySQLで次のような出力が表示されます:
$ mysql Ver 14.14 Distrib 5.7.16, for Linux (x86_64) using EditLine wrapper
またはMariaDBの場合は次のように出力します:
mysql Ver 15.1 Distrib 5.5.52-MariaDB, for Linux (x86_64) using readline 5.1
後で使用するため、実行しているデータベースとバージョンをメモします。次に、データベースに手動でアクセスできるようにデータベースを停止する必要があります。
ステップ2:データベースサーバーの停止
ルートパスワードを変更するには、事前にデータベースサーバーをシャットダウンする必要があります。
MySQLでそれを行うには:
$ Sudo systemctl stop mysql
そしてMariaDBの場合:
$ Sudo systemctl stop mariadb
ステップ3:権限チェックなしでデータベースサーバーを再起動する
ユーザー権限に関する情報をロードせずにMySQLとMariaDBを実行すると、パスワードを入力せずにルート権限でデータベースコマンドラインにアクセスできます。これにより、知らないうちにデータベースにアクセスできるようになります。
これを行うには、データベースがユーザー権限情報を保存する付与テーブルをロードしないようにする必要があります。これは少しセキュリティ上のリスクがあるため、他のクライアントが接続できないようにネットワークもスキップする必要があります。
許可テーブルをロードしたり、ネットワークを有効にしたりせずにデータベースを起動します:
$ Sudo mysqld_safe --skip-grant-tables --skip-networking &
このコマンドの最後にあるアンパサンドにより、このプロセスがバックグラウンドで実行されるため、端末を引き続き使用できます。
これで、パスワードを要求しないルートユーザーとしてデータベースに接続できます。
$ mysql -u root
代わりに、データベースシェルプロンプトがすぐに表示されます。
MySQLプロンプト
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
MariaDBプロンプト
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MariaDB [(none)]>
これでrootアクセスが可能になったので、rootパスワードを変更できます。
ステップ4:ルートパスワードの変更
mysql> FLUSH PRIVILEGES;
これで、実際にルートパスワードを変更できます。
MySQL 5.7.6以降およびMariaDB 10.1.20以降、次のコマンドを使用します。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
MySQL 5.7.5以前およびMariaDB 10.1.20以前、 つかいます:
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');
new_password
を新しいパスワードに置き換えてください。
注:ALTER USER
コマンドが機能しない場合は、通常、より大きな問題を示しています。ただし、代わりにUPDATE ... SET
を試してrootパスワードをリセットできます。
[重要]これは私の特定の問題を修正した特定の行です:
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root' AND Host = 'localhost';
この後、必ず許可テーブルを再ロードしてください。
どちらの場合でも、コマンドが正常に実行されたことの確認が表示されます。
Query OK, 0 rows affected (0.00 sec)
パスワードが変更されたため、データベースサーバーの手動インスタンスを停止して、以前と同じように再起動できます。
ステップ5:データベースサーバーを通常どおり再起動する
チュートリアルでは、データベースを再起動するためにさらにいくつかの手順に進みますが、使用したのはこれだけです。
MySQLの場合:$ Sudo systemctl start mysql
MariaDBの場合:
$ Sudo systemctl start mariadb
次のコマンドを実行して、新しいパスワードが正しく適用されたことを確認できます。
$ mysql -u root -p
これで、コマンドは新しく割り当てられたパスワードを要求するようになります。それを入力すると、期待どおりにデータベースプロンプトにアクセスできるはずです。
結論
これで、MySQLまたはMariaDBサーバーへの管理アクセスが復元されました。選択した新しいルートパスワードが強力で安全であることを確認し、安全な場所に保管してください。
次のコマンドを実行してrootとして接続します(パスワードなし)。
Sudo /usr/bin/mysql --defaults-file=/etc/mysql/debian.cnf
新しいLinuxユーザにとって、これは大変な作業です。これをmysql 8で更新してみましょう(2018年9月12日現在、最新バージョンは8.0.12です)。
それでおしまい。
他のすべての答えを試した後、これが最終的に私のために働いたものです
Sudo mysql -- It does not ask me for any password
-- Then in MariaDB/MySQL console:
update mysql.user set plugin = 'mysql_native_password' where User='root';
FLUSH PRIVILEGES;
exit;
この投稿で答えを見つけました: https://medium.com/@chiragpatel_52497/solved-error-access-denied-for-user-root-localhost-of-mysql-programming-school-6e3611838d06 =
MySQLワークベンチで、左側のサイドバーに移動し、[管理]の下の[ユーザーと特権]を選択し、[ユーザーアカウント]の下の[root]をクリックします。次に[管理者ロール]タブをクリックし、チェックボックスをオンにしてアカウントにアクセス権を付与します。それが役立つことを願っています!
OSxでのMySQLの初期設定で自分のrootパスワードを設定するためにこれを行いました。端末を開きます。
Sudo sh -c 'echo /usr/local/mysql/bin > /etc/paths.d/mysql'
端末を閉じて新しい端末を開きます。そして以下はLinuxでrootパスワードを設定するために行われます。
Sudo /usr/local/mysql/support-files/mysql.server stop
Sudo mysqld_safe --skip-grant-tables
(Sudo mysqld_safe --skip-grant-tables:これは私にとっては最初はうまくいきませんでした。しかし2回目の試行で成功しました。)
次にMySQLにログインします
mysql -u root
FLUSH PRIVILEGES;
パスワードを変更します。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
MySQLを再起動します。
Sudo /usr/local/mysql/support-files/mysql.server stop
Sudo /usr/local/mysql/support-files/mysql.server start
十分な権限がない場合に発生する可能性があります。 su
と入力し、rootパスワードを入力して再試行します。
私の場合、Debian 10では、エラー
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
(GOOD WAY)によって解決されました
Sudo mysql -u root -p mysql
間違った方法:
mysql -u root -p mysql
あなたが私のようなもので、上記のすべての提案が失敗した場合は、マシン上のmysqlのすべてのバージョンをアンインストールし、このコマンドを使用して残りのすべてのmysqlファイルを検索します。Sudo find / -name "mysql"
およびrm -rf
添付されている名前(プログラミング言語ライブラリに関連するファイルはスキップする必要があります)。 MySQLの新しいバージョンをインストールしてお楽しみください。注:すべてのデータを失うため、最初にオプションの重量を量ります。