このエラーが継続的に表示されます。
私はmySQL Workbenchを使用していますが、私が見つけているのは、ルートのスキーマ特権がnullであるということです。特権はまったくありません。
サーバーが使用されているプラットフォーム間で問題が発生していますが、これは突然の問題です。
[email protected]どうやらアクセスが多いようですが、私はそのようにログインしていますが、とにかくローカルホストに割り当てているだけです-ローカルホストには特権がありません。
私はFLUSH HOSTS
、FLUSH PRIVILEGES
などのようないくつかのことをしましたが、それまたはインターネットからは成功していません。
どうすればルートにアクセスできるようになりますか?私はこれをいらいらさせます。なぜなら、私が周りを見回すと、あなたが「アクセスできる」ことを期待しますが、アクセス権がないので、コマンドラインなどに行くことができず、GRANT
自分には何もありません。
SHOW GRANTS FOR root
を実行すると、これが返ってきます。
エラーコード:1141。ホスト '%'のユーザー 'root'に定義された権限はありません。
ヘルプを提供できる人に感謝します
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;
それは私のユーザー特権が好きではなかったので、私はそれをSudoにします。 (bashで<< Sudoはユーザーとパスワードを設定します)(これはrootのユーザー名を与え、パスワードを何も設定しません)(Macの場合)
Sudo mysql -uroot -p
あなたが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
コマンドを実行して完了したら、このプロセスを実行できます。
次のコマンドを試してください
~$ 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>
mysql 5.7以降のバージョンでエラー以下に直面している人々のために -
Access denied for user 'root'@'localhost' (using password: YES)
新しい端末を開く
Sudo /etc/init.d/mysql stop
... MySQL Community Server 5.7.8-rcが停止しました
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を押すだけで処理を中断して終了します。
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'を入力します。
use mysql;
テーブル名とカラム名を補完するためのテーブル情報の読み取りこの機能をオフにすると、-Aを使って起動を早くすることができます。
データベースが変更されました
mysql> update user set authentication_string=password('password') where user='root';
クエリOK、影響を受けた4行、1警告(0.03秒)一致した行:4変更された:4警告:1
mysql> flush privileges;
クエリOK、影響を受けた0行(0.00秒)
mysql> quit
Bye
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が起動します
mysql -u root -p
パスワードを入力する:
MySQLモニターへようこそ。コマンドはで終わります。または\ g。 MySQL接続IDは2サーバーバージョンです:5.7.8-rc MySQL Community Server(GPL)
mysql 5.7以降のバージョンでは、カラムのパスワードはmysql.userテーブルのauthentication_stringという名前に置き換えられました。
これらのステップが誰かに役立つことを願っています、ありがとう。
Linuxシステムでrootパスワードをリセットする簡単な方法:
Sudo dpkg-reconfigure mysql-server-5.5
アクセスが拒否されたその他の理由を確認してください。
https://dev.mysql.com/doc/refman/5.7/en/problems-connecting.html
mysql 5.7ではpasswordフィールドはauthentication_stringに置き換えられましたので、代わりに次のようにしてください。
update user set authentication_string=PASSWORD("root") where User='root';
このリンクを参照してください MySQLユーザーDBにはパスワード欄がありません - OSXにMySQLをインストールする
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
ユーザー '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
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
管理者としてWorkbenchを実行して、同じ問題を解決しました。
...私の場合は、会社のコンピュータの制限によるものだと思います...
私は次の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';
--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
私と同じ問題でしたが、私は32(ビット)でMySQLサーバーを使用していたとワークベンチは64(ビット)のバージョンで実行されていたために、それが原因でした。サーバーとワークベンチは同じバージョンである必要があります。
この問題を解決するには、次の手順を試してください。
mysqld --console
を実行します。171010 14:58:22 [Note] --secure-file-priv
はNULLに設定されます。コマンドプロンプトから上記のコマンドを実行すると、データのインポートおよびエクスポートに関連する操作が無効になります。mysqld
がWindowsファイアウォールまたは他のプログラムによってブロックされていることを確認する必要があります。mysqld
またはmysql
アプリケーションのブロックを解除するには、次の手順に従います。wf.msc
と入力し、ファイアウォール設定を開きます。mysqld
またはmysqld
インスタンスが使用可能であることを確認し、ドメインのパブリックおよびプライベートのチェックボックスをオンにして設定を保存します。これで問題なくMySQLコンソールを実行することが可能になるはずです。
上記の問題に対して、システム内の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のままにして、コードを実行します。