web-dev-qa-db-ja.com

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

このエラーが継続的に表示されます。

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

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

[email protected]どうやらアクセスが多いようですが、私はそのようにログインしていますが、とにかくローカルホストに割り当てているだけです-ローカルホストには特権がありません。

私はFLUSH HOSTSFLUSH PRIVILEGESなどのようないくつかのことをしましたが、それまたはインターネットからは成功していません。

どうすればルートにアクセスできるようになりますか?私はこれをいらいらさせます。なぜなら、私が周りを見回すと、あなたが「アクセスできる」ことを期待しますが、アクセス権がないので、コマンドラインなどに行くことができず、GRANT自分には何もありません。

SHOW GRANTS FOR rootを実行すると、これが返ってきます。

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

ヘルプを提供できる人に感謝します

61
Chase

Rootパスワードをリセットするための手順は を使用してください - ただし、rootパスワードをリセットする代わりに、mysql.userテーブルにレコードを強制的にINSERTします。

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

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

それは私のユーザー特権が好きではなかったので、私はそれをSudoにします。 (bashで<< Sudoはユーザーとパスワードを設定します)(これはrootのユーザー名を与え、パスワードを何も設定しません)(Macの場合)

Sudo mysql -uroot -p
31
Dan Kaiser

あなたが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コマンドを実行して完了したら、このプロセスを実行できます。

28
KeitelDOG

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

~$ 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> 
19
aashish

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:書き込みエラー:Broken pipe 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および/またはその関連会社の登録商標です。その他の名称は、それぞれの所有者の商標です。

「help;」と入力します。または '\ 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;クエリOK、影響を受けた0行(0.00秒)

  3. mysql> quit Bye

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

..180102 11:37:12 mysqld_safe pidファイルからのmysqld /var/run/mysqld/mysqld.pidは終了しました。 * 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という名前に置き換えられました。

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

13
ArifMustafa

Linuxシステムでrootパスワードをリセットする簡単な方法:

Sudo dpkg-reconfigure mysql-server-5.5

アクセスが拒否されたその他の理由を確認してください。

https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html

6
Parth mehta

mysql 5.7ではpasswordフィールドはauthentication_stringに置き換えられましたので、代わりに次のようにしてください。

update user set authentication_string=PASSWORD("root") where User='root';

このリンクを参照してください MySQLユーザーDBにはパスワード欄がありません - OSXにMySQLをインストールする

2
PrestonDocks

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

ユーザー 'root' @ 'localhost'のアクセス拒否(パスワードを使用: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
1
Veera Prasad

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

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

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

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

  • mysql> UPDATE mysql.user SETパスワード= 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

1

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

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

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
Alex Tsurika

--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
Jordan

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

xpress

0
xpress

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

  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

上記の問題に対して、システム内のur passwordは、プログラムで渡されたパスワードと一致する必要があります。これは、uをプログラムとして実行すると、ユーザーとしてrootを指定したのでシステムのパスワードをチェックするためです。データベースから削除されません。

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());
        }
    }
}

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

0
Koyel Sharma