"пользователь удаленной таблицы" == ПЛОХО - PullRequest
1 голос
/ 08 сентября 2011

Так что я просто выстрелил себе в ногу и чувствую себя идиотом.Я играл с предоставлением и отзывом разрешений для моей базы данных MySQL одновременно с добавлением таблицы user в одну из моих баз данных.В любом случае, я допустил ошибку, выполнив:

Drop table user;

С моей учетной записью администратора сервера MySQL вместо моей учетной записи администратора конкретной базы данных в основной базе данных MySQL, и для autocommit было установлено значение true.Теперь, конечно, я получаю сообщения об ошибках типа:

SQL Error: Table 'mysql.user' doesn't exist

У меня еще не было настроено ни одной базы данных, так что это не так уж сложно, но есть ли способ, которым я могу выполнить оператор create table user .. длявернуть мою таблицу пользователя, или я должен просто прикусить пулю и переустановить мой сервер MySQL?

Спасибо!

ОБНОВЛЕНИЕ:

Вот созданиескрипт, который я смог использовать, чтобы вернуть мою таблицу mysql.user.Мне нужно было вручную создавать пользователей после запуска этого скрипта, но мой root-пользователь все еще был там и имел доступ к базе данных.Излишне говорить, что моей следующей задачей будет планирование резервного копирования для моего сервера MySQL:)

CREATE TABLE `user` (
  `Host` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `User` char(16) COLLATE utf8_bin NOT NULL DEFAULT '',
  `Password` char(41) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
  `Select_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Insert_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Update_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Delete_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Drop_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Reload_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Shutdown_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Process_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `File_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Grant_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `References_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Index_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_db_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Super_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tmp_table_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Lock_tables_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Execute_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_slave_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Repl_client_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Show_view_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Alter_routine_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_user_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Event_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Trigger_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `Create_tablespace_priv` enum('N','Y') CHARACTER SET utf8 NOT NULL DEFAULT 'N',
  `ssl_type` enum('','ANY','X509','SPECIFIED') CHARACTER SET utf8 NOT NULL DEFAULT '',
  `ssl_cipher` blob NOT NULL,
  `x509_issuer` blob NOT NULL,
  `x509_subject` blob NOT NULL,
  `max_questions` int(11) unsigned NOT NULL DEFAULT '0',
  `max_updates` int(11) unsigned NOT NULL DEFAULT '0',
  `max_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `max_user_connections` int(11) unsigned NOT NULL DEFAULT '0',
  `plugin` char(60) COLLATE utf8_bin NOT NULL DEFAULT '',
  `authentication_string` text COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`Host`,`User`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='Users and global
privileges'

Ответы [ 3 ]

4 голосов
/ 08 сентября 2011

Зависит от того, что вы подразумеваете под «вернуть мою таблицу пользователя».Вы можете определенно создать идентичную таблицу user с той же схемой и тому подобным, но любые данные в исходной таблице будут потеряны навсегда.К сожалению, он не появится снова при создании новой таблицы.

К счастью, для не требуется переустановка сервера MySQL или чего-либо еще.Сервер просто отлично;Вы только что потеряли стол.Удаление таблиц никак не повредит серверу.Воссоздайте его, и все готово.(Если у вас нет записи о структуре таблицы, я уверен, что вы сможете это выяснить.) И если у вас есть резервные копии, восстановите их.Если нет, я полагаю, что с этого момента вы будете хранить резервные копии.

Извините, что у вас возникли проблемы, и я надеюсь, что вы сможете избежать таких проблем в будущем.Удачи!

2 голосов
/ 08 сентября 2011

Нет разумного способа восстановить ваш стол, и вам это не нужно. Если у вас есть данные, которые вы хотите сохранить в других базах данных, следуйте этим простым инструкциям. (Пути предполагают стандартную установку Linux. Не просто копируйте, вставляйте, читайте, интерпретируйте, разбирайтесь в каждой команде перед ее запуском). Кроме того, это все из памяти, я не проверял ничего из этого.

Остановите процесс сервера MySQL

cd /var/lib/
mv mysql/mysql mysql/old_mysql_db
mv mysql mysql_save
mkdir mysql
chown --reference=mysql_save mysql
chmod --reference=mysql_save mysql
mysql_install_db
mv mysql/mysql mysql_save/
mv mysql ~/mysql_newinstall_deleteme
mv mysql_save mysql

Теперь запустите процесс сервера MySQL и вернитесь к нему. Вы начинаете с нуля со всеми вашими пользователями и разрешениями, но остальные ваши базы данных должны быть целыми, при условии, что ваша база данных mysql не использует innodb.

0 голосов
/ 20 апреля 2018

Вот последняя таблица с 45 столбцами, если вы импортируете старую пользовательскую таблицу из резервной копии, которая затем отказывается обновляться.

CREATE TABLE `user` (
`Host` CHAR(60) NOT NULL DEFAULT '' COLLATE 'utf8_bin',
`User` CHAR(32) NOT NULL DEFAULT '' COLLATE 'utf8_bin',
`Select_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Insert_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Update_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Delete_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Create_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Drop_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Reload_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Shutdown_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Process_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`File_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Grant_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`References_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Index_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Alter_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Show_db_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Super_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Create_tmp_table_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Lock_tables_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Execute_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Repl_slave_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Repl_client_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Create_view_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Show_view_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Create_routine_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Alter_routine_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Create_user_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Event_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Trigger_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`Create_tablespace_priv` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`ssl_type` ENUM('','ANY','X509','SPECIFIED') NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
`ssl_cipher` BLOB NOT NULL,
`x509_issuer` BLOB NOT NULL,
`x509_subject` BLOB NOT NULL,
`max_questions` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`max_updates` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`max_connections` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`max_user_connections` INT(11) UNSIGNED NOT NULL DEFAULT '0',
`plugin` CHAR(64) NOT NULL DEFAULT 'mysql_native_password' COLLATE 'utf8_bin',
`authentication_string` TEXT NULL COLLATE 'utf8_bin',
`password_expired` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
`password_last_changed` TIMESTAMP NULL DEFAULT NULL,
`password_lifetime` SMALLINT(5) UNSIGNED NULL DEFAULT NULL,
`account_locked` ENUM('N','Y') NOT NULL DEFAULT 'N' COLLATE 'utf8_general_ci',
PRIMARY KEY (`Host`, `User`)
)
COMMENT='Users and global privileges'
COLLATE='utf8_bin'
ENGINE=MyISAM
;

и пользовательские данные по умолчанию:

INSERT INTO <code>user (Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv , File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, Event_priv, Trigger_priv, Create_tablespace_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions , max_updates, max_connections, max_user_connections, plugin, authentication_string, password_expired, password_last_changed, password_lifetime, account_locked) ЗНАЧЕНИЯ («localhost», «root», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y», «Y» ',' Y ',' Y ',' Y ',' Y ',' Y ',' Y ',' ',' ',' ',' ', 0, 0, 0, 0,' mysql_native_password ', '', 'N', '2018-04-20 14:57:25', NULL, 'N'); INSERT INTO user_copy (Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, Event_priv, Trigger_priv, Create_tablespace_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections, plugin, authentication_string, password_expired, password_last_changed, password_lifetime, account_locked) ЗНАЧЕНИЯ ('localhost', 'mysql.session', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N', 'N ',' N ',' N ',' N ',' N ',' N ',' Y ',' N ',' N ',' N ',' N ',' N ',' N ', 'N', 'N', 'N', 'N', 'N', 'N', 'N', '', '', '', '', 0, 0, 0, 0, 'mysql_native_password ',' * THISISNOTAVALIDPASSWORDTHATCANBEUSEDERE ',' N ',' 2018-04-20 14:57:25 ', NULL,' Y '); INSERT INTO user_copy (Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, Event_priv, Trigger_priv, Create_tablespace_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections, plugin, authentication_string, password_expired, password_last_changed, password_lifetime, account_locked) ЗНАЧЕНИЯ ('localhost', 'mysql.sys', '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 ',' * THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE ',' N ',' 2018-04-20 14:57:25 ', NULL,' Y ');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...