Кажется, я не могу воссоздать простого пользователя, которого я удалил, даже с правами root в MySQL.
Мой случай: пользователь 'jack' существовал и раньше, но я удалил его из mysql.user, чтобы воссоздать его. Я не вижу следов этого в этой таблице. Если я выполню эту команду для какого-то другого случайного имени пользователя, скажем, «jimmy», она будет работать нормально (так же, как это было первоначально для «jack»).
Что я сделал, чтобы испортить пользователя «jack» и как я могу отменить это повреждение, чтобы воссоздать «jack» в качестве действительного пользователя для этой установки MySQL?
Смотрите пример ниже. (Конечно, первоначально, было много времени между созданием «Джека» и его удалением.)
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)
источник
да, эта ошибка есть. Тем не менее, я нашел небольшой обходной путь.
Это должно решить это. Предполагая, что мы хотим создать пользователя admin @ localhost, это будут команды:
ура
источник
Эта ошибка находится на bugs.mysql.com с 2007 года, и эта тема в основном просто попугай всех этих неправильных ответов, даже год назад.
Согласно документации MySQL, команды типа
CREATE USER
,GRANT
,REVOKE
иDROP USER
не требуют последующейFLUSH PRIVILEGES
команды. Понятно почему, если читать документы. Это потому, что непосредственное изменение таблиц MySQL не перезагружает информацию в память; Тем не менее, множество решений этой ошибки утверждают, чтоFLUSH PRIVILEGES
это ответ.Это также может даже не быть ошибкой. Это заговор документации - документы варьируются в одном критическом месте от версии к версии.
13.7.1.2. DROP USER Синтаксис
...
...
Если вы указываете только часть имени пользователя в имени учетной записи, используется часть имени хоста «%».
DROP USER
как присутствует в MySQL 5.0.0 удаляет только те учетные записи, которые не имеют никаких привилегий. В MySQL 5.0.2 он также был изменен для удаления привилегий учетной записи. Это означает, что процедура удаления учетной записи зависит от вашей версии MySQL.Начиная с MySQL 5.0.2, вы можете удалить учетную запись и ее привилегии следующим образом:
Оператор удаляет строки привилегий для учетной записи из всех таблиц предоставления.
Единственный раз, когда я получаю эту ошибку, это когда я делаю
DROP USER user
; как подсказывает документ, но MySQL не рассматривает «%» как подстановочный знак, который отбрасывает всех пользователей на всех хостах. В конце концов, это не так дико. Или, может быть, это иногда работает, когда он удаляет пользователя localhost, а затем пытается удалить его на%.Мне ясно, что когда он пытается удалить пользователя в%, он выдает сообщение об ошибке и завершает работу. Последующее
CREATE USER
в localhost не удастся, потому что пользователь localhost никогда не удалялся. Похоже, нет необходимости тратить время на копки в таблицах грантов в поисках призраков, как предложил один из авторов.Я вижу 7 голосов за:
Что интерпретируется как
DROP USER 'jack@localhost'@'%';
# неправильноНа самом деле кажется, что существует настоящая ошибка, которая генерирует такое же сообщение об ошибке, но это связано с удалением первого созданного пользователя (после установки нового сервера mysql). Была ли эта ошибка исправлена, я не знаю; но я не помню, чтобы это происходило в последнее время, и я сейчас вернусь к версии 5.5.27.
источник
mariadb-server-5.5.60-1.el7_5.x86_64
Если вы используете
DELETE
оператор вmysql.user
таблице при попытке удалить пользователя, а затем при попытке восстановить пользователя с помощьюCREATE USER
, вы получите1396
ошибку. Избавьтесь от этой ошибки, запустивDROP USER 'username'@'host';
(Вы получите 1396 ошибок, если попытаетесь воссоздать домкрат)
(Выйти из этой ситуации, запустив
DROP USER
)(Полагаю,
FLUSH PRIVILEGES
это не повредит, но, безусловно, сначала удалите пользователя.)источник
Вы не должны вручную удалять пользователей таким образом. MySQL имеет
REVOKE
синтаксис для удаления привилегий иDROP USER
их удаления:Лучше всего использовать предоставленные инструменты, а не копаться в фоновом режиме.
источник
flush privileges
? Официальные документы MySQL делать разговоры о вещах , какdelete from user where user = 'jack';
иflush privileges
. Почему вы говорите, что они не являются частью предоставленных инструментов?'jack@localhost'
вероятно , должно быть'jack'@'localhost'
здесь.Отбросьте пользователя, сбросьте привилегии; затем создайте пользователя. Это работает!
источник
попробуйте
delete from mysql.db where user = 'jack'
и создайте пользователяисточник
В MySQL 5.6 использование
Drop user userid;
не работает. Используйте:Drop user 'userid'@'localhost';
и / илиDrop user 'userid'@'%';
. Таким образом, я смог удалить пользователя и воссоздать его.источник
источник
Проверьте, если есть
или
источник
Если вы хотите удалить пользователя с SQL, вам нужно удалить соответствующие данные в этих таблицах:
columns_priv
,db
,procs_priv
,tables_priv
. Затем выполнитеflush privileges;
источник
Как ни странно, рабочая среда MySQL решила это за меня. На вкладке «Администрирование» -> «Пользователи и привилегии» пользователь был указан с ошибкой. Использование опции удаления решило проблему.
источник
Простое решение этой проблемы. Поскольку команда «delete» удаляет только запись пользователя в таблице «user» базы данных «mysql», мы можем добавить ее обратно, а затем полностью удалить пользователя. Тогда вы можете создать пользователя с тем же именем.
Шаг 1. найти формат записи пользовательской таблицы в базе данных mysql
Шаг 2. В соответствии с колонками, показанными на шаге 1, создайте фиктивную запись с именем пользователя. Вставьте его в таблицу, например, напомните, чтобы заменить «имя пользователя» на ваше имя пользователя.
Примечание: иногда вы можете столкнуться с проблемами при вставке, просто измените данные, чтобы они работали.
Шаг 3. Удалите пользователя.
Теперь вы можете создать пользователя с тем же именем.
источник
Это сообщение MySQL ERROR 1045 (28000): Доступ запрещен для пользователя 'bill' @ 'localhost' (используется пароль: YES) . Иногда есть анонимный пользователь '' @ 'localhost' или '' @ '127.0.0.1'. Итак, чтобы решить проблему,
сначала удалите пользователя, чей «создать пользователя» не удалось.
Создать нового пользователя.
Предоставьте необходимые привилегии новому пользователю.
Сбросить привилегии.
источник
У меня была такая же ошибка. Но команда "FLUSH PRIVILEGES"; не помогло Я сделал это так:
источник
Сервер MySQL работает с опцией --skip-grant-tables, поэтому он не может выполнить этот оператор
источник
Я знаю, что это старый, но так как это первый результат в Google, я решил добавить свое решение. В моем случае удаление пользователя работало нормально, но воссоздание пользователя дало мне «ОШИБКА 2013 (HY000): потеря соединения с сервером MySQL во время запроса» и «ОШИБКА 2006 (HY000): сервер MySQL пропал». Я попытался сбросить привилегии -> удалить пользовательское решение, но все еще была та же ошибка.
В моем случае ошибка произошла из-за обновления mysql с 5.1 -> 5.6. Просматривая журналы ошибок, я заметил, что там сказано запустить mysql_upgrade. Сделал это, и мой оператор создания пользователя работал нормально!
источник
Я недавно получил эту ошибку.
То, что сработало для меня, - это проверка в инструментальной среде mysql «Пользователи и привилегии» и осознание того, что пользователь все еще существует.
Удалив его оттуда, я смог воссоздать пользователя.
источник
mysql> DELETE FROM mysql.db WHERE user = 'jack'
Перезагрузите сервер:
# mysql.server restart
Тогда сделай свою
CREATE USER
команду.источник
CREATE
послеDELETE
.Я столкнулся с этой проблемой сегодня и решил ее, выполнив следующие действия:
1) вручную вставить этого тревожного пользователя, указав значение обязательных полей в
mysql.user
2)
3) А.
4) А.
B.
Надеюсь это поможет.
источник
Просто удалите данные, относящиеся к пользователю, из mysql.db (возможно, и из других таблиц), а затем заново создайте обе.
источник
Я также столкнулся с той же проблемой, после нескольких поисков я нашел решение, которое помогло мне. Надеюсь, оно вам поможет. Поскольку вы уже создали пользователей, теперь попробуйте сделать это
FLUSH PRIVILEGES
на консоли Mysql. Эта проблема уже есть в сообщении об ошибке MySql. Вы также можете проверить это. Теперь после очистки вы можете создать нового пользователя. следуйте ниже шагов:Теперь вы можете увидеть консоль Mysql.
Вместо имени пользователя вы можете указать желаемое имя пользователя. Если вы используете Mysql на своем локальном компьютере, то вместо хоста введите «localhost» , в противном случае укажите имя вашего сервера, к которому вы хотите получить доступ.
Пример: СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ smruti @ localhost, ИДЕНТИФИЦИРОВАННОГО 'hello';
Теперь новый пользователь создан. Если вы хотите предоставить все права доступа, введите
GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
Теперь вы можете выйти из MySQL, набрав
\q
.Now еще раз войти черезmysql -u newusername -p
, затем нажмите Enter. Вы можете видеть все.Надеюсь это поможет.
источник