2

これが私がしたことです。

mysql> CREATE USER 'matrix'@'%.something.com' IDENTIFIED BY 'weak';
ERROR 1396 (HY000): Operation CREATE USER failed for 'matrix'@'%.something.com'
mysql> CREATE USER 'foo'@'%.something.com' IDENTIFIED BY 'weak';
Query OK, 0 rows affected (0.00 sec)

そして、これは私が最終的にするものです:

mysql> select user,host from mysql.user;
+------------------+--------------------+
| user             | host               |
+------------------+--------------------+
| auth             | %.something.com    |
| foo              | %.something.com    |
| submit           | %.something.com    |
| testcase         | %.something.com    |
| version          | %.something.com    |
| root             | 127.0.0.1          |
| root             | this.something.com |
| debian-sys-maint | localhost          |
| master           | localhost          |
| root             | localhost          |
+------------------+--------------------+
10 rows in set (0.00 sec)

DELETE FROM mysql.user WHERE User IN (%s);アカウントが存在するかどうかわからないという問題を回避するために、ユーザーを削除したことが問題のようです。

私の(醜い)解決策は、次のものに置き換えますDELETE FROM mysql.user WHERE...

DELIMITER //
CREATE PROCEDURE dropuserif(u VARCHAR(32), h VARCHAR(64))
BEGIN
  DECLARE s INT;
  SELECT COUNT(*) INTO s FROM mysql.user WHERE user = u AND host = h;
  IF s > 0 THEN
    BEGIN
      SET @d = CONCAT("DROP USER '", u, "'@'", h, "';");
      PREPARE stmt_name FROM @d;
      EXECUTE stmt_name;
      DEALLOCATE PREPARE stmt_name;
    END;
  END IF;
END//
DELIMITER ;
4

2 に答える 2

2

「エラー 1396」を Web 検索すると、このバグ レポートが表示されます。

原因は、以前に削除されたユーザー エントリが何らかの理由でデータベースにまだ残っており、同じ名前の新しいアカウントの作成をブロックしているようです。

FLUSH PRIVILEGES;最初のステートメントの前にa を試して、もう一度実行してください。

于 2010-09-10T14:49:07.193 に答える
0

この問題に向けた良いスタートをここで探してください

[snark]''を検索しなかった理由はありますmysql ERROR 1396か?[/ snark] '

于 2010-09-10T14:53:01.323 に答える