После новой установки mysql-server невозможно войти в систему с помощью mysql root -u.

Включенная страница руководства sinit.8, а также README очень меня объясняют. Тем не менее, быстрое введение для вас, когда я загляну в исходный код:

  • главный исполняемый файл sinit, / sbin / init запускается ядром как pid 1
  • , он подготавливает начальную среду для запуска / bin / rc.init скрипт как отдельный дочерний процесс
  • он запускает /bin/rc.init как отдельный процесс, таким образом, /bin/rc.init содержат команды чтобы инициализировать систему за пределами этой точки
  • , она входит в бесконечный цикл, где он ловит любые зомбированные процессы и считывает их коды выхода в никуда
  • , в то время как он находится в бесконечном цикле, однако он может быть прерван сигналами. Сигналы, которые он определяет для прослушивания, - это SIGUSR1 и SIGINT. SIGUSR1 заставляет init запустить /bin/rc.shutdown как poweroff имя скрипта, а SIGINT заставляет init запустить тот же скрипт с именем reboot , чтобы различать режимы работа внутри скрипта. Обратите внимание, что эти два сигнала - это только те, которые init слушает, включая SIGKILL и SIGSTOP, которые он проигнорирует. И только суперпользователю разрешено посылать сигналы в init.SIGINT генерируется ядром, когда вы нажимаете Ctrl-Alt-Delete, но только когда это сказано (есть специальный системный вызов, который обычно выполняет процесс init, чтобы разрешить отправку SIGINT в cad)

Итак, из этого sinit не предоставляет :

  • сценариев инициализации (вы должны написать свои собственные или адаптировать те, которые поставляются с дистрибутивом)
  • способов управления (например, уровнями выполнения), только две простые команды

Однако sinit - это симпатичный милый маленький init, который работает. Бьюсь об заклад, это очень хорошо для встроенных систем, а также для простых настольных систем без суеты современных настольных сред.

3
13.04.2017, 15:22
4 ответа

1) вы можете попробовать перенастроить mysql-сервер:

sudo dpkg-reconfigure mysql-server

2) проверьте, есть ли у вас debian-sys-maint passwd

cat /etc/mysql/debian.cnf

и проверьте:

user     = debian-sys-maint
password = xxxxGx0fSQxxGa

debian-sys-maint имеет все привилегии на сервере mysql

3) если это не решает проблему, вы можете сбросить пароль:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD("NewPasswd") where User='root';
mysql> flush privileges;
mysql> quit

sudo service mysql stop
sudo service mysql start
mysql -u root -p
7
27.01.2020, 21:12

Я столкнулся с парой проблем с принятым ответом.

Первый раз, когда я запустил sudo service mysql stop, служба не остановилась, и я этого не осознавал. Выполните ps -fe | grep mysql. Поэтому убедитесь, что процесс завершен, прежде чем запускать любую из следующих команд. После нескольких попыток я убил его с помощью sudo kill -KILL <mysqld process id>.

Затем, после запуска обновления sql, снова service mysql stopне сработало. Поэтому проверьте свой идентификатор процесса с помощью ps -fe | grep mysqld_safeи используйте sudo kill -TERM <process id>, как указано ниже. Если у вас более одного процесса, используйте тот, у которого самый низкий идентификатор.

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables &
mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD("NewPasswd"), plugin='mysql_native_password', host='%' where User='root';
mysql> flush privileges;
mysql> quit

sudo kill -TERM <mysqld_safe process id>
sudo service mysql start
mysql -u root -p
1
27.01.2020, 21:12

это сработало для меня, я просто изменил строку ниже из

mysql> update user set password=PASSWORD("NewPasswd") where User='root';

в

mysql> update user set password=PASSWORD("NewPasswd"), plugin='mysql_native_password', host='%' where User='root';
1
27.01.2020, 21:12

После новой установки MySQL 8.0.24 на Ubuntu 20.10 мне не удалось войти в систему с

mysql -u root

, что приводит к

Error 1698 (28000): Access denied for user 'root'@'localhost'

Однако мне удалось войти с помощью

sudo mysql -u root

Я думаю, это потому, что суперпользователь в Linux является пользователем root.

2
21.04.2021, 13:19

Теги

Похожие вопросы