Системная ошибка 1396

Есть домен Windows 2008, в нативном режиме. Два контроллера домена.

В домене несколько серверов под Windows 2000 server и несколько сотен рабочих станций под управлением Windows 2000/XP.

На одной рабочей станции под Windows XP (SP3) наблюдается такая ситуация: при попытке подключиться к шаре на одном из Win2K серверов выдаётся ошибка:

C:\>net use * \\SERVER1\SHARE
Системная ошибка 1396.

Вход в систему не произведен: конечная учетная запись указана не верно.

Это для всех пользователей, кто залогинился на этой рабочей станции. Эти же пользователи с другой рабочей станции свободно получают доступ к этой шаре на этом сервере. Кроме того, все пользователи, залогинившиеся на этой рабочей станции, свободно получают доступ к шарам на других серверах под Windows 2000 Server.

То есть, получается какая-то «нелюбовь» одной РС под Windows XP к одному серверу под Windows 2000 Server. В eventlog’ах ни на рабочей станции, ни на сервере. ни на контроллерах домена ничего про эту попытку подключения нет.

Пытался гуглить на тему System error 1396 — ничего вразумительного не нашёл.

Как понять, чем именно этому серверу не приглянулась эта рабочая станция?

PS. Иногда, всё-таки подключения с этой рабочей станции к шарам на этом сервере начинают работать. Но с чем это связано — понять не могу… Да, и ещё: при попытке посмотреть доступные шары с этой рабочей станции (по net view \\server1) получаю «Ошибка 5. Отказано в доступе». Шары на других серверах просматриваются нормально.

  • Перемещено

    22 апреля 2012 г. 18:04
    (От:Windows Server 2008)

ERROR 1396 (HY000): Operation CREATE USER failed for 'saravanakumar'@'localhost'

Does indeed indicate that the user already exists or did exist.

FLUSH PRIVILEGES doesn’t delete users.

Reloads the privileges from the grant tables in the mysql database.

The server caches information in memory as a result of GRANT, CREATE USER, 
CREATE SERVER, and INSTALL PLUGIN statements. This memory is not released 
by the corresponding REVOKE, DROP USER, DROP SERVER, and UNINSTALL PLUGIN 
statements, so for a server that executes many instances of the statements 
that cause caching, there will be an increase in memory use. 
This cached memory can be freed with FLUSH PRIVILEGES.

You are looking for DROP USER.

DROP USER user [, user] ...

http://dev.mysql.com/doc/refman/5.1/en/drop-user.html


Order of buisness would be:

DROP USER 'saravanakumar'@HOSTNAME;
CREATE USER 'saravanakumar'@HOSTNAME [IDENTIFIED BY 'password'];

You will probably need to flush privileges if you use delete from (do not).
Remember: this does not necessarily revoke all the privileges this user may have (like table privileges), you will have to do this yourself — if you don’t you may not be able to recreate the user.

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'saravanakumar'@HOSTNAME;
DELETE FROM mysql.user WHERE user='saravanakumar';
FLUSH PRIVILEGES;
CREATE USER 'saravanakumar'@HOSTNAME [IDENTIFIED BY 'password'];

«user» requires you to specify an account name

Syntax for account names is 'user_name'@'host_name'

and

An account name consisting only of a user name is equivalent 
to 'user_name'@'%'. For example, 'me' is equivalent to 'me'@'%'.

Additional reading: http://dev.mysql.com/doc/refman/5.1/en/account-names.html


Please read those bug reports for further clarification

http://bugs.mysql.com/bug.php?id=28331

http://bugs.mysql.com/bug.php?id=62255

Решение ошибки с кодом 1396 Error ‘Operation CREATE USER failed for… при настроенной репликации MySQL.

  • Ошибка возникает при ситуации, когда в схеме Master\Slave на мастере был создан пользователь и ему выданы некие права. Например, вот так:

CREATE USER 'zabbix'@'%' IDENTIFIED BY '<password>';
GRANT REPLICATION CLIENT,PROCESS,SHOW DATABASES,SHOW VIEW ON *.* TO 'zabbix'@'%';
  • После этого на слейве репликация останавливается с ошибкой:
Last_SQL_Errno: 1396
Last_SQL_Error: Error 'Operation CREATE USER failed for 'zabbix'@'%'' on query. Default database: ''. Query: 'CREATE USER 'zabbix'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*B3198D30E7427FD4920A86A602DE74D9FABE22B9''

А причиной ошибки является то, что на slave-сервере, вероятнее всего, уже был такой пользователь, а потому репликация и прерывается. Такая особенность MySQL:

  • https://bugs.mysql.com/bug.php?id=28331
  • https://dba.stackexchange.com/questions/34940/adding-a-user-to-mysql-with-name-fails-with-error-1396

Решение проблемы логичное и простое: необходимо удалить пользователя на слейве, и самое главное – не забыть выполнить очистку прав, после чего запускать слейв:

delete from mysql.user where user='zabbix';
flush privileges;
start slave;

Либо же привести пользователя на слейве и мастере к единому виду, т.е. записи в таблицах должны совпадать, после чего также выполнить flush privileges; и запустить репликацию.

Таким образом, я наконец выяснил то, что продолжалось (после большого метода проб и ошибок). У нас был контроллер домена, который отказал только что, и компания приняла решение не сделать восстановление. Грязный и ужасный и не лучшие практики, но безотносительно. То, что они сделали, было помещено запись для того DC, указывающего на IP-адрес другого DC. То, что это сделало, было, позволяют записям SRV от того DC продолжать работать. То, что произошло, было то, что кто-то видел «несправедливость» запись и удалил ее. Таким образом заставляя НЕКОТОРЫХ, но не все запросы на аутентификацию перестать работать. Это было затем усугублено некоторыми несколько нечетными правилами кэширования для записей SRV в Победе XP. Любые шаблоны, которые я видел, были или вторичны, или просто мой мозг, пытающийся видеть шаблоны, где были действительно просто случайные данные. При восстановлении запись решила проблему, и так как компания закрывается, он — родитель в конце года, никто не собирается потрудиться делать что-либо лучше.

Ссылка

The MySQL ERROR 1396 occurs when MySQL failed in executing any statement related to user management, like CREATE USER or DROP USER statements.

This error frequently appears when you run statements to create or remove users from your MySQL database server.

MySQL has a bug that triggers this error when you remove a user without using the DROP USER statement.

This bug prevents you from re-creating a user previously deleted using the DELETE statement.

For example, suppose you create and then delete the developer account as shown below:

CREATE USER `developer` IDENTIFIED BY "developer";
DELETE FROM mysql.user WHERE user = 'developer';

Then the next time you create the user developer in your database server, you will trigger the error as follows:

mysql> DELETE FROM mysql.user WHERE user = 'developer';
Query OK, 1 row affected (0.00 sec)

mysql> CREATE USER `developer` IDENTIFIED BY "developer";
ERROR 1396 (HY000): Operation CREATE USER failed for 'developer'@'%'

To fix this, you need to run a DROP USER statement for the same user account.

MySQL will respond with the same error, but after that you can create the user again.

Take a look at the following example:

mysql> CREATE USER `developer` IDENTIFIED BY "developer";
ERROR 1396 (HY000): Operation CREATE USER failed for 'developer'@'%'

mysql> DROP USER `developer`;
ERROR 1396 (HY000): Operation DROP USER failed for 'developer'@'%'

mysql> CREATE USER `developer` IDENTIFIED BY "developer";
Query OK, 0 rows affected (0.01 sec)

Even though the DROP USER statement above throws an error, the same user can be created using the CREATE USER statement after that.

The error hasn’t been fixed up to MySQL version 8.0.26 as of today.

Other ways the error can be triggered

The error can also occur when you run the CREATE USER statement for an already existing user:

mysql> CREATE USER `developer` IDENTIFIED BY "developer";
Query OK, 0 rows affected (0.01 sec)

mysql> CREATE USER `developer` IDENTIFIED BY "developer";
ERROR 1396 (HY000): Operation CREATE USER failed for 'developer'@'%'

The same error could happen when you run the DROP USER or ALTER USER statement for a non-existing user account:

mysql> DROP USER `notuser`;
ERROR 1396 (HY000): Operation DROP USER failed for 'notuser'@'%'

mysql> ALTER USER dev@localhost IDENTIFIED BY 'newPassword';
ERROR 1396 (HY000): Operation ALTER USER failed for 'dev'@'localhost'

To list all existing users in your database server, you need to query the user table in your mysql database.

SELECT the user and host column from the table as follows:

SELECT user, host FROM mysql.user;

Please note that you may have different values between % and localhost in the host column.

Here’s an example from my database:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| developer        | %         |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| nathan           | localhost |
| root             | localhost |
+------------------+-----------+

The % value in the host column is a wild card that allows the user account to connect from any host location.

The localhost value means that you need to connect from the localhost only.

MySQL treats two identical user account with different hosts value as different users.

When you don’t specify the host value in the CREATE USER statement, it will default to the % wild card.

-- Create developer@% account
CREATE USER `developer` IDENTIFIED BY "developer";

-- Create developer@localhost account
CREATE USER `developer`@localhost IDENTIFIED BY "developer";

The statements above will create two developer accounts with different hosts:

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| developer        | %         |
| developer        | localhost |
+------------------+-----------+

When you trigger the ERROR 1396 that’s not caused by the bug above, be sure to check out the users you have in your database first.

Понравилась статья? Поделить с друзьями:
  • Системная ошибка 1231 сетевая папка недоступна windows 10
  • Системная ошибка 1392
  • Системная ошибка 1223
  • Системная ошибка 1068 не удалось запустить дочернюю службу
  • Системная ошибка 1376 виндовс 10