Как запустить MySQL с помощью -skip-grant-tables?

Я заблокировал пользователя root из нашей базы данных. Мне нужно вернуть все привилегии пользователю root. У меня есть пароль, и я могу войти в MySQL. Но пользователь root не имеет всех привилегий.

У меня была такая же проблема, как и название этого вопроса, так что если кто-то еще пойдет по этому вопросу и захочет запустить MySql в режиме «skip-grant-tables» в Windows, вот что я сделал.

Остановите службу MySQL через инструменты администратора, службы.

Измените конфигурационный файл my.ini (предполагая пути по умолчанию)

 C:\Program Files\MySQL\MySQL Server 5.5\my.ini 

или для версии MySQL> = 5.6

 C:\ProgramData\MySQL\MySQL Server 5.6\my.ini 

В разделе SERVER SECTION в разделе [mysqld] добавьте следующую строку:

 skip-grant-tables 

так что у вас есть

 # SERVER SECTION # ---------------------------------------------------------------------- # # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # [mysqld] skip-grant-tables 

Запустите службу еще раз, и вы сможете войти в свою базу данных без пароля.

Как повторно взять под свой контроль пользователя root в MySQL.

ОПАСНОСТЬ: ОПРЕДЕЛЕНИЕ РИСКА

  • Начать сеанс ssh (если возможно, использовать root).
  • Измените файл my.cnf с помощью.

     sudo vi /etc/my.cnf 
  • Добавить строку в блок mysqld. *

     skip-grant-tables 
  • Сохранить и выйти.

  • Перезапустите службу MySQL.

     service mysql restart 
  • Проверьте статус службы.

     service mysql status 
  • Подключитесь к mysql.

     mysql 
  • Использование основной базы данных.

     use mysql; 
  • Переопределить пароль пользователя root.

     UPDATE user SET `authentication_string` = PASSWORD('myNuevoPassword') WHERE `User` = 'root'; 
  • Отредактируйте файл my.cnf.

     sudo vi /etc/my.cnf 
  • Стереть строку.

     skip-grant-tables 
  • Сохранить и выйти.

  • Перезапустите службу MySQL.

     service mysqld restart 
  • Проверьте статус службы.

     service mysql status 
  • Подключение к базе данных.

     mysql -u root -p 
  • Введите новый пароль при появлении запроса.

Это действие очень опасно, оно позволяет любому подключиться ко всем базам данных без ограничений без пользователя и пароля. Он должен использоваться тщательно и должен быть быстро восстановлен, чтобы избежать рисков.

В системе Linux вы можете сделать следующее (должно быть похожее для других ОС)

Проверьте, запущен ли процесс mysql:

 sudo service mysql status 

Если запустить, остановите процесс: (убедитесь, что вы закрыли все инструменты mysql)

 sudo service mysql stop 

Если у вас есть проблема с остановкой, выполните следующие действия.

Поиск процесса: ps aux | grep mysqld ps aux | grep mysqld Убейте процесс: kill -9 process_id

Теперь запустите mysql в безопасном режиме с пропущенным грантом

 sudo mysqld_safe --skip-grant-tables & 

Если вы используете сервер mysql 5.6 и имеете проблемы с C:\Program Files\MySQL\MySQL Server 5.6\my.ini :

Вы должны перейти на C:\ProgramData\MySQL\MySQL Server 5.6\my.ini .

Вы должны добавить skip-grant-tables а затем вам не нужен пароль.

 # SERVER SECTION # ---------------------------------------------------------------------- # # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # # server_type=3 [mysqld] skip-grant-tables 

Примечание: после того, как вы закончите работу над skip-grant-tables , вы должны восстановить файл C:\ProgramData\MySQL\MySQL Server 5.6\my.ini .

если вы работаете на Apple MacBook OSX тогда:

  1. Остановите свой сервер MySQL (если он уже запущен).
  2. Найдите файл конфигурации MySQL, my.cnf . (Для меня это было размещено @ /Applications/XAMPP/xamppfiles/etc Вы можете просто /Applications/XAMPP/xamppfiles/etc поиск, если вы не можете найти его).
  3. Откройте файл my.cnf в любом текстовом редакторе.
  4. Добавьте "skip-grant-tables" (без кавычек) в конце раздела [mysqld] и сохраните файл.
  5. Теперь запустите свой сервер MySQL. Он начнется с опции skip-grant-tables .

Сделайте то, что вы хотите сейчас!

PS: Удалите skip-grant-tables из файла my.cnf только вы закончите с тем, что хотите сделать. ELSE MySQL-сервер всегда будет работать без доступа.

Используйте следующую команду (обратите внимание на «d»): mysqld --skip-grant-tables

Пробовав много вещей, это то, что сработало для меня:

 sudo mysql -u root ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword'; 

Поэтому сначала мы используем sudo для входа в mysql как root без необходимости пароля. Затем мы просто обновляем пароль root.

После этого я перезапустил mysqld :

 sudo service mysql restart 

И newpassword зарегистрирован в корне!

если это окно, самое простое – остановить серверы, добавить таблицы пропуска в файл конфигурации mysql и перезапустить сервер.

как только вы устранили свои проблемы с разрешением, повторите описанное выше, но удалите опцию skip-grant-tables.

если вы не знаете, где находится ваш файл конфигурации, войдите в mysql, отправьте SHOW VARIABLES LIKE '%config%' и одна из возвращенных строк сообщит вам, где находится ваш файл конфигурации.

Измените файл my.ini и добавьте skip-grant-tables и перезапустите сервер mysql:

 [mysqld] port= 3306 socket = "C:/xampp/mysql/mysql.sock" basedir = "C:/xampp/mysql" tmpdir = "C:/xampp/tmp" datadir = "C:/xampp/mysql/data" pid_file = "mysql.pid" # enable-named-pipe key_buffer = 16M max_allowed_packet = 1M sort_buffer_size = 512K net_buffer_length = 8K read_buffer_size = 256K read_rnd_buffer_size = 512K myisam_sort_buffer_size = 8M log_error = "mysql_error.log" skip-grant-tables # Change here for bind listening # bind-address="127.0.0.1" # bind-address = ::1 
Давайте будем гением компьютера.