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


110

このエラーが繰り返し発生します。

私はmySQL Workbenchを使用していますが、ルートのスキーマ特権がnullであることがわかりました。特権はまったくありません。

サーバーが使用されているプラ​​ットフォーム間で問題が発生し、これは突然の問題でした。

root@127.0.0.1には多くのアクセス権があるようですが、私はそのようにログインしていますが、とにかくlocalhostに割り当てているだけです-localhostには権限がありません。

私のようないくつか行っているFLUSH HOSTSFLUSH PRIVILEGESなど、それからの成功またはインターネットを発見しました。

どうすればrootアクセスを取り戻すことができますか?周りを見回すと、「アクセス権」があることを期待しているが、アクセス権がないので、コマンドラインや何か、そしてGRANT自分自身に入ることができないので、これはイライラします。

これを実行SHOW GRANTS FOR rootすると、私は見返りに次のようになります。

エラーコード:1141。ホスト '%'のユーザー 'root'に定義された許可はありません。


SHOW GRANTS FOR rootクエリで実行し、結果を質問に投稿します。
NobleUplift 2013

MySQL Workbenchを使用して、ローカルホストまたは別のホストからデータベースにアクセスしようとしていますか?
アンディジョーンズ

--skip-grant-tableを使用してサーバーを再起動し、任意のユーザーでログインし、上記のオプションなしでrootに完全な権限を与えてサーバーを再起動します
vidyadhar

@AndyJonesいいえ、使用している専用サーバー上にあります。
2013

@vidyadhar申し訳ありませんが、どこでそれを行うのかわかりませんか?
2013

回答:


51

ルートパスワードをリセットするための手順を使用します。ただし、ルートパスワードをリセットする代わりに、mysql.userテーブルにレコードを強制的に挿入します。

initファイルで、代わりにこれを使用してください

INSERT INTO mysql.user (Host, User, Password) VALUES ('%', 'root', password('YOURPASSWORD'));
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;

1
アンディさん、申し訳ありませんが、ステップ6に到達すると、問題が発生し続けます。私はインストールウィザードを使用したので、"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt Everythingが使用されているはずですが、上記の内容をファイルに入れました。サービスも停止しています。私はこの出力を取得します:prntscr.com/1ilxau そしてすべて(プラグイン)がシャットダウンします。本当に混乱しています。
2013

2
これを管理者として実行していますか?
アンディジョーンズ

1
私の愚かな驚きには私は違いました。私がそうした後、私はこれをprntscr.com/1imcnj-自分の行で(ペーストから)初めて実行したとき、それからすべてを1行に入れました。申し訳ありませんが、これは混乱を招くだけで、SQLエキスパート自体ではありません。
追跡

16
それは与える:ERROR 1054 (42S22): Unknown column 'Password' in 'field list'エラー。@AndyJones
alper

1
「フィールドリスト」の不明な列「パスワード」を取得しています
sricheta ruj '27

128

MySql 5.7。+で同じ問題がある場合:

Access denied for user 'root'@'localhost'

これは、MySql 5.7がデフォルトでソケットへの接続を許可しているためですsudo mysql。つまり、で接続するだけです。sqlを実行する場合:

SELECT user,authentication_string,plugin,host FROM mysql.user;

それからあなたはそれを見るでしょう:

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             |                                           | auth_socket           | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

rootとパスワードによる接続を許可するには、次のコマンドでテーブルの値を更新します。

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Current-Root-Password';
FLUSH PRIVILEGES;

次に、selectコマンドを再度実行すると、変更されていることがわかります。

+------------------+-------------------------------------------+-----------------------+-----------+
| user             | authentication_string                     | plugin                | host      |
+------------------+-------------------------------------------+-----------------------+-----------+
| root             | *2F2377C1BC54BE827DC8A4EE051CBD57490FB8C6 | mysql_native_password | localhost |
| mysql.session    | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys        | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *497C3D7B50479A812B89CD12EC3EDA6C0CB686F0 | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)

以上です。このプロセスは、sudo mysql_secure_installationコマンドを実行して完了した後で実行できます。

mariadbの場合は、

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('manager');

パスワードを設定します。https://mariadb.com/kb/en/set-password/で詳細を見る


1
Linux
Mint

からauth_socketに更新しmysql_native_passwordて問題を修正しました。ありがとうございました!
olore

1
これは理解しようとすることと、時間の巨大な浪費とに完全に腹を立てました。彼らがこれを尋ねている間に私は願っていmysql_secure_installationます。この回答をありがとうございました。
PatPeter


42

私のユーザー権限が気に入らなかったので、SUDOにします。(bash << sudo set user and password)(これはrootのユーザー名を与え、パスワードを何も設定しない)(Macの場合)

sudo mysql -uroot -p

27

次のコマンドを試してください

~$ sudo /etc/init.d/mysql stop
~$ sudo mysqld_safe --skip-grant-tables &
~$ mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 1 to server version: 4.1.15-Debian_1-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

mysql> use mysql;

mysql> update user set password=PASSWORD("root") where User='root';

mysql> flush privileges;

mysql> quit

~$ sudo /etc/init.d/mysql stop

Stopping MySQL database server: mysqld

STOPPING server from pid file /var/run/mysqld/mysqld.pid

mysqld_safe[6186]: ended

[1]+  Done                    mysqld_safe --skip-grant-tables

~$ sudo /etc/init.d/mysql start

~$ mysql -u root -p

* MySQL Community Server 5.6.35 is started
~$ mysql -u root -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.35 MySQL Community Server (GPL)

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

11
MySQL 5.7では、mysql.userテーブルフィールドのパスワードフィールドが削除され、フィールド名は「authentication_string」になりました。
Rumid

新しいバージョンのmysqlの場合、パスワード列名をauthentication_stringに変更しました
Ramesh Maharjan

sudo mysqld_safe私にこれを得た/var/run/mysqld for UNIX socket file don't existsmkdir -p /var/run/mysqldsudo chown -R mysql:mysql /var/run/mysqld/それが機能し、デーモンを起動しました。
kenzotenma

1
エラー2002(HY000):ソケット '/var/run/mysqld/mysqld.so
Mostafa

19

mysql 5.7以降のバージョンで以下のエラーに直面している人のために-

Access denied for user 'root'@'localhost' (using password: YES)
  1. 新しいターミナルを開く

  2. sudo /etc/init.d/mysql stop ... MySQL Community Server 5.7.8-rcが停止しました

  3. sudo mysqld_safe --skip-grant-tables & これにより、すべての付与レベルの特権がスキップされ、mysqlがセーフモードで開始されます。

grep:書き込みエラー:壊れたパイプ180102 11:32:28 mysqld_safeロギングが「/var/log/mysql/error.log」に記録されます。

Ctrl + ZまたはCtrl + Cを押すだけで、プロセスを中断して終了します

  1. mysql -u root

MySQLモニターへようこそ。コマンドは;で終わります。または\ g。MySQL接続IDは2サーバーバージョンです:5.7.8-rc MySQL Community Server(GPL)

Copyright(c)2000、2015、Oracleおよび/またはその関連会社。全著作権所有。

OracleはOracle Corporationおよび/またはその関連会社の登録商標です。その他の名称は、それぞれの所有者の商標である可能性があります。

「ヘルプ」と入力します。または '\ h'を使用してください。現在の入力ステートメントをクリアするには、「\ c」と入力します。

  1. mysql> use mysql;

テーブル名と列名を補完するためのテーブル情報の読み取り-Aを使用すると、この機能をオフにして起動をより速くすることができます。

データベースが変更されました

  1. mysql> update user set authentication_string=password('password') where user='root'; クエリOK、4行に影響、1警告(0.03秒)一致した行:4変更:4警告:1

  2. mysql> flush privileges; クエリは正常、0行が影響を受けた(0.00秒)

  3. mysql> quit さようなら

  4. sudo /etc/init.d/mysql stop

..180102 11:37:12 PIDファイル/var/run/mysqld/mysqld.pidのmysqld_safe mysqldが終了しました。* MySQL Community Server 5.7.8-rcが停止しましたarif @ ubuntu:〜$ sudo /etc/init.d/mysql start .. * MySQL Community Server 5.7.8-rcが起動しました

  1. mysql -u root -p

    パスワードを入力する:

    MySQLモニターへようこそ。コマンドは;で終わります。または\ g。MySQL接続IDは2サーバーバージョンです:5.7.8-rc MySQL Community Server(GPL)

mysql 5.7以降のバージョンの後、列パスワードはmysql.userテーブルの名前authentication_stringに置き換えられました。

これらのステップが誰かに役立つことを願って、ありがとう。


15

私はubuntu 18を使用していて、次のコマンドでMySQL(password:root)をインストールしました。

sudo apt install mysql-server
sudo mysql_secure_installation

通常のubuntuユーザーでログインしようとすると、この問題が発生しました。

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

しかし、スーパーユーザーを介してMySQLにログインすることができました。次のコマンドを使用して、通常のユーザーを介してログインできました。

sudo mysql    
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';
exit;

その後、通常のアカウントでMysqlにログインできるはずです。

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



5

Workbenchでこのエラーが発生しても、ターミナルからログインできる場合は、次の手順に従ってください。

まず、現在のパスワードでログインします。

sudo mysql -u root -p

次に、強度の低いパスワードを使用するとエラーが発生する場合があるため、パスワードを変更します。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new-strong-password';

FLUSH PRIVILEGES;

次に、終了して新しいパスワードで再度ログインします。

quit

sudo mysql -u root -p

ログインに成功したら、次のコマンドを入力します。

use mysql;

「データベースが変更されました」などのメッセージが表示されたら、次のように入力します。

UPDATE user SET plugin='mysql_native_password' WHERE User='root';

そのタイプの後:

UPDATE mysql.user set authentication_string=PASSWORD('new-strong-password') where user='root';

次に、次のように入力します。

FLUSH PRIVILEGES;

次に単に終了します:

quit

次に、WORKBENCHに新しいパスワードでログインしてみます。それがうまくいくことを願っています。ありがとうございました。


4

UbuntuサーバーにTestlinkをインストールしているときにこの問題に直面し、次の手順に従いました

mysql -u root
use mysql;
update user set password=PASSWORD("root") where User='root';
flush privileges;
quit

ここでインスタンスを停止して再起動しますすなわち

sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

2

ルートパスワードをリセットする最も簡単な方法は次のとおりです。

  • mysqld --skip-grant-tablesオプションを再起動します。これにより、誰でもパスワードなしですべての権限で接続できます。これは安全ではないため、-skip-grant-tablesを--skip-networkingと組み合わせて使用​​して、リモートクライアントが接続しないようにすることができます。

  • 次のコマンドでmysqldサーバーに接続します。

  • shell> mysql mysqlクライアントで次のステートメントを発行します。パスワードを使用するパスワードに置き換えます。

  • mysql> UPDATE mysql.user SET Password = PASSWORD( 'MyNewPass')-> WHERE User = 'root'; mysql> FLUSH PRIVILEGES;

  • サーバーを停止して、通常どおり再起動します(--skip-grant-tablesおよび--skip-networkingオプションなしで)。

ソースMysqlのドキュメントと個人的な経験:

http://dev.mysql.com/doc/refman/5.6/en/resetting-permissions.html



0

この問題を解決するには、次の手順を試してください。

  1. ターミナル/コマンドプロンプトを開き、MySQLインストールフォルダーのbinフォルダーに移動します。次に、コマンドを実行しmysqld --consoleます。
  2. その行171010 14:58:22 [Note] --secure-file-privがNULLに設定されていることがわかる場合。コマンドプロンプトから上記のコマンドを実行すると、データのインポートとエクスポートに関連する操作が無効になります。
  3. 次に、 mysqld、がWindowsファイアウォールまたは別のプログラムによってブロックされて。
  4. Windowsファイアウォールによってブロックされている場合は、ブロックを解除して設定を保存する必要があります。
  5. mysqldまたはmysqlアプリケーションのブロックを解除するには、次の手順に従います。
    1. コマンドプロンプトに移動し、入力wf.mscしてファイアウォール設定を開きます。
    2. [Windowsファイアウォールを介したアプリまたは機能を許可する]をクリックします。
    3. mysqldまたはmysqldインスタンスがリストで利用可能であることを確認し、ドメイン、パブリックおよびプライベートのチェックボックスをオンにして、設定を保存します。
  6. binフォルダーに戻り、ステップ1のコマンドを再試行してください。
  7. 正常に動作し、エラーは表示されません。

これで、MySQLコンソールを問題なく実行できるはずです。


0

次のsqlを使用してMySQLサーバーを再起動することで、同じ問題を解決しました。

update mysql.user set Select_priv='Y',Insert_priv='Y',Update_priv='Y',Delete_priv='Y',Create_priv='Y',Drop_priv='Y',Reload_priv='Y',Shutdown_priv='Y',Process_priv='Y',File_priv='Y',Grant_priv='Y',References_priv='Y',Index_priv='Y',Alter_priv='Y',Show_db_priv='Y',Super_priv='Y',Create_tmp_table_priv='Y',Lock_tables_priv='Y',Execute_priv='Y',Repl_slave_priv='Y',Repl_client_priv='Y',Create_view_priv='Y',Show_view_priv='Y',Create_routine_priv='Y',Alter_routine_priv='Y',Create_user_priv='Y',Event_priv='Y',Trigger_priv='Y',Create_tablespace_priv='Y'
where user='root';

0

ユーザー 'root' @ 'localhost'のAccess Deniedに(パスワード:YESを使用して)数時間作業しましたが、次の解決策が見つかりました、

The answer to this problem was that in the my.cnf located within
/etc/mysql/my.cnf

the line was either 
bind-address = 127.0.0.1 
            (or)
bind-address = localhost
            (or)
bind-address = 0.0.0.0

I should prefer that 127.0.0.1

I should also prefer 0.0.0.0, it is more flexible 
because which will allow all connections

0

--init-fileパラメータをエスケープする必要はないと思います。

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\\mysql-init.txt

する必要があります:

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld.exe" --defaults-file="C:\\Program Files\\MySQL\\MySQL Server 5.6\\my.ini" --init-file=C:\mysql-init.txt


0

上記の問題の場合、システムのurパスワードは、プログラムで渡されたパスワードと一致する必要があります。プログラムを実行すると、システムのパスワードがチェックされます。はデータベースから削除されません。

import java.sql.DriverManager;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
class Delete
{
    public static void main(String []k)
    {
        String url="jdbc:mysql://localhost:3306/student";

        String user="root";
        String pass="jacob234";
        try
        {
            Connection myConnection=DriverManager.getConnection(url,user,pass);
            Statement myStatement=myConnection.createStatement();
            String deleteQuery="delete from students where id=2";
            myStatement.executeUpdate(deleteQuery);
            System.out.println("delete completed");
        }catch(Exception e){
            System.out.println(e.getMessage());
        }
    }
}

urシステムパスワードをjacob234のままにして、コードを実行します。


0

管理者としてWorkbenchを実行して、同じ問題を解決しました。

...それは、会社のコンピュータの制限によるものだと思います。私の場合は...


0

私と同じ問題がありましたが、mysqlサーバーを32(ビット)で使用していて、ワークベンチが64(ビット)バージョンで実行されていたために発生しました。サーバーとワークベンチは同じバージョンである必要があります。

xpress



0

Laravelアプリケーションを使用してMysqlデータベースに接続しようとすると、同じ問題に直面していました。ユーザーのパスワードを確認することをお勧めします。MySQLパスワードには、次のような特殊文字を含めることはできませんなどの ...


bluehostでは、パスワードから特殊文字を削除することで問題が実際に修正されました。
メナ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.