MySQLのrootとしても、削除した単純なユーザーを再作成することはできないようです。
私の場合:ユーザー 'jack'は以前から存在していましたが、再作成するためにmysql.userから削除しました。私はその表にこれの痕跡は見当たらない。このコマンドを他のランダムなユーザー名、たとえば 'jimmy'に対して実行した場合、(元々 'jack'の場合とまったく同じように)正常に機能します。
ユーザー「jack」を破損させるために何をしましたか。また、このMySQLのインストールで有効なユーザーとして「jack」を再作成するために、その破損を元に戻す方法はありますか?
下記の例をご覧ください。 (もちろん、もともと、「jack」の作成から彼の削除までには長い時間がありました。)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,Host from user;
+------------------+-----------------+
| user | Host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jack | localhost |
| root | localhost |
| root | russ-Elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
mysql> delete from user where user = 'jack';
Query OK, 1 row affected (0.00 sec)
mysql> select user,Host from user;
+------------------+-----------------+
| user | Host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| root | localhost |
| root | russ-Elite-book |
+------------------+-----------------+
4 rows in set (0.00 sec)
mysql> CREATE USER 'jack'@'localhost' IDENTIFIED BY 'test123';
ERROR 1396 (HY000): Operation CREATE USER failed for 'jack'@'localhost'
mysql> CREATE USER 'jimmy'@'localhost' IDENTIFIED BY 'test123';
Query OK, 0 rows affected (0.00 sec)
mysql> select user,Host from user;
+------------------+-----------------+
| user | Host |
+------------------+-----------------+
| root | 127.0.0.1 |
| debian-sys-maint | localhost |
| jimmy | localhost |
| root | localhost |
| root | russ-Elite-book |
+------------------+-----------------+
5 rows in set (0.00 sec)
FLUSH PRIVILEGES
をやってみてください。 このエラーコードに関するこのMySQLのバグ投稿 は、privsをフラッシュした後のyoursに似たケースで、いくつかの成功を報告しているようです。
はい、このバグはあります。しかし、私は小さな回避策を見つけました。
それで解決するはずです。ユーザadmin @ localhostを作成したいとすると、これらはコマンドになります。
ユーザーadmin @ localhostのドロップ、 特権のフラッシュ、 create 'admin @ localhost'で識別admins_password'
乾杯
このバグは2007年以来bugs.mysql.comにあり続けており、このスレッドは主に1年前まででさえも、これらすべての間違った答えの単なるオウムです。
MySQLのドキュメントによると、CREATE USER
、GRANT
、REVOKE
、およびDROP USER
のようなコマンドは後続のFLUSH PRIVILEGES
コマンドを必要としません。なぜドキュメントを読むのか、それは明らかです。 MySQLテーブルを直接変更しても情報がメモリに再ロードされないためです。それでも、このバグに対する多数の解決策がFLUSH PRIVILEGES
がその答えです。
これもバグではないかもしれません。それはドキュメンテーションの陰謀です - ドキュメントはバージョンごとに1つの重要な場所で異なります。
13.7.1.2。 DROP USERの構文
...
DROP USERユーザー[、ユーザー] ...
...
DROP USER 'jeffrey' @ 'localhost';
アカウント名のユーザー名部分のみを指定した場合、ホスト名部分の '%'が使用されます。
MySQL 5.0.0に存在するDROP USER
は特権を持たないアカウントのみを削除します。 MySQL 5.0.2では、アカウント権限も削除するように修正されました。これは、アカウントを削除する手順がMySQLのバージョンによって異なることを意味します。
MySQL 5.0.2以降、以下のようにアカウントとその特権を削除することができます。
DROP USERユーザー。
このステートメントは、すべての付与テーブルからアカウントの特権行を削除します。
このエラーが発生するのは、DROP USER user
を実行したときだけです。ドキュメントが示唆しているように、MySQLはすべてのホストのすべてのユーザーを削除するような方法で '%'をワイルドカードとして扱いません。結局それほどワイルドではありません。または、localhostユーザーを削除してから%のユーザーを削除しようとしたときに機能することもあります。
%でユーザーを削除しようとすると、エラーメッセージを表示して終了することは明らかです。 localhostユーザーが削除されたことがないため、以降のlocalhostでのCREATE USER
は失敗します。あるポスターが示唆しているように、助成金テーブルで幽霊を探すのに時間を無駄にする必要はないようです。
私は7票を得ます:
DROP USER 'jack @ localhost'; //アカウントを完全に削除する
これはDROP USER 'jack@localhost'@'%';
#wrongと解釈されます
実際には同じエラーメッセージを生成する本当のバグがあるようですが、それは最初に作成されたユーザー(新しいmysqlサーバーのインストール後)が削除されることに関係しています。そのバグが修正されたかどうか、私は知りません。しかし、私は最近起こったことを思い出していないし、私は現時点ではバージョン5.5.27までです。
ユーザーを削除しようとしてmysql.user
テーブルでDELETE
ステートメントを使用してからCREATE USER
を使用してユーザーを再確立しようとすると、1396
エラーが発生します。 DROP USER 'username'@'Host';
を実行してこのエラーを解決してください
DELETE
FROM mysql.user
WHERE user = 'jack';
(jackを再作成しようとすると1396エラーが発生します)
CREATE USER 'jack'@'localhost' IDENTIFIED BY PASSWORD '*Fi47ytFF3CD5B14E7EjkjkkC1D3F8086A5C0-krn';
(DROP USER
を実行してこの状況から抜け出します)
DROP USER 'jack'@'localhost';
(私はFLUSH PRIVILEGES
は問題ないと思いますが、間違いなく最初にユーザーを削除します。)
ユーザーを削除し、権限をフラッシュします。その後、ユーザーを作成します。それは働きます!
delete from mysql.db where user = 'jack'
を試してからユーザーを作成してください
MySQL 5.6では、Drop user userid;
を使用しても機能しません。 Drop user 'userid'@'localhost';
やDrop user 'userid'@'%';
を使ってください。このようにして、ユーザーをドロップして再作成することができました。
two method
one :
setp 1: drop user 'jack'@'localhost';
setp 2: create user 'jack'@localhost identified by 'ddd';
two:
setp 1: delete from user where user='jack'and Host='localhost';
setp 2: flush privileges;
setp 3: create user 'jack'@'localhost' identified by 'ddd';
Sqlを使用してユーザーを削除したい場合は、columns_priv
、db
、procs_priv
、tables_priv
のテーブル内の関連データを削除する必要があります。それからflush privileges;
を実行してください
この問題に対する簡単な回避策。 "delete"コマンドは "mysql"データベースの "user"テーブルのユーザーレコードを削除するだけなので、それを元に戻してからユーザーを完全に削除できます。その後、同じ名前のユーザーを作成できます。
ステップ1。Mysqlデータベース内のユーザーテーブルのレコードフォーマットを見つける
use mysql;
select * from user;
ステップ2.ステップ1に示されている列に従って、ユーザー名でダミーレコードを作成します。たとえば、テーブルに挿入して、 "username"を自分のユーザー名に置き換えます。
Insert into user value ('%','username','N','N','N','N','N',
'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N',
'N','N','N','N','N','N','N','N','N','','','','','0','0','0',
'0','mysql_native_password',
'*52C5E3AC6BC5E2E0BFF86978BF62A1481AC79D58','N',
'2016-12-10 23:59:12',null,'N');
注:挿入時に問題が発生することがあります。データを変更して機能させることができます。
Step 3.ユーザーを削除します。
drop user username;
今、あなたは同じ名前のユーザーを作成することができます。
この投稿は MySQLエラー1045(28000):ユーザ 'bill' @ 'localhost'のアクセスが拒否されました(パスワードを使用:YES) は役に立ちます。匿名ユーザー '' @ 'localhost'または '' @ '127.0.0.1'がいる場合もあります。だから、問題を解決するために、
最初に 'create user'が失敗したユーザーを削除します。
新しいユーザーを作成します。
新しいユーザーに必要な権限を付与します。
特権をフラッシュします。
私は同じエラーがありました。しかし、「FLUSH PRIVILEGES;」と命じてください。助けにはならなかった。私はそれが好きでした:
CREATE USER 'jimmy'@'localhost' IDENTIFIED BY 'test123';
UPDATE mysql.user SET USER='jack' WHERE USER='jimmy';
私は最近このエラーを受けました。
私にとってうまくいったのは、mysqlワークベンチ 'Users and Privileges'をチェックインし、ユーザーがまだ存在していることに気づいたことです。
そこから削除した後、私はユーザーを再作成することができました。
mysql> DELETE FROM mysql.db WHERE user = 'jack'
サーバーを再起動します。
# mysql.server restart
それからCREATE USER
コマンドを実行してください。
あるかどうかを確認
'ユーザー'@'%'
または
'user' @ 'localhost'
MySQLサーバーは--skip-grant-tablesオプションで実行されているため、このステートメントを実行できません
私はこれが古いことを知っています、しかしそれはグーグルでの最初の結果であるので私は私が私の解決策を加えるべきだと考えました。私の場合、ユーザーを削除しても問題はありませんでしたが、ユーザーを再作成すると、「エラー2013(HY000):クエリ中にMySQLサーバーへの接続が失われました」および「エラー2006(HY000):MySQLサーバーがなくなりました」と表示されました。私はフラッシュ特権を試してみました - >ユーザーソリューションを削除しましたが、それでも同じエラーがありました。
私の場合、エラーは5.1からMySQLへのアップグレードが原因でした - > 5.6。エラーログを見て、私はそれがmysql_upgradeを実行するように言ったことに気づいた。それと私のcreate user文はうまくいきましたか。