@mr_blond97

Нужно сбросить пароля mysql в ubuntu, как зайти в mysqld_safe режим?

Не могу сбросить пароль от мускуля:
$ sudo /etc/init.d/mysql stop

[ok]

$ sudo mysqld_safe --skip-grant-tables &

[1] 6302 $ 150927 15:21:29 mysqld_safe Can't log to error log and syslog at the same time.  Remove all --log-error configuration options for --syslog to take effect.
150927 15:21:29 mysqld_safe Logging to '/var/log/mysql/error.log'.
150927 15:21:29 mysqld_safe A mysqld process already exists


Update:

Зашел под рутом, сделал все то же самое, сработало.

# sudo /etc/init.d/mysql stop
* Stopping MySQL database server mysqld                                                                              [ OK ]
# ps axu
# sudo mysqld_safe --skip-grant-tables &


Выводит сообщение:

150927 16:24:06 mysqld_safe Can't log to error log and syslog at the same time.  Remove all --log-error configuration options for --syslog to take effect.
150927 16:24:06 mysqld_safe Logging to '/var/log/mysql/error.log'.
150927 16:24:06 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql


Жду минут 15, ^C, смотрю процессы:

# ps axu

Внезапно в процессах не оказалось мускуля. Радуюсь, продолжаю:

# mysql -u root

mysql> use mysql;
mysql> update user set password=PASSWORD("mynewpassword") where User='root';
mysql> flush privileges;
mysql> \q

# sudo /etc/init.d/mysql stop
# sudo /etc/init.d/mysql start
  • Вопрос задан
  • 3469 просмотров
Решения вопроса 1
martin74ua
@martin74ua Куратор тега MySQL
Linux administrator
когда вы запустили mysqld_safe --skip_grant_tables - то сервер запустился и работает. В соседнем терминале сбрасывайте пароль.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
И ещё раз показываю скрипт сброса пароля:
#!/bin/bash
mysql_password=$(pwgen -s 40 1)

/etc/init.d/mysql stop

echo "UPDATE mysql.user SET Password=PASSWORD('${mysql_password}') WHERE User='root';" > /tmp/mysql-set-pass
echo "FLUSH PRIVILEGES;" >> /tmp/mysql-set-pass

su -c "mysqld_safe --init-file=/tmp/mysql-set-pass &" mysql --shell=/bin/bash
sleep 5

echo "[mysql]
password = ${mysql_password}

[mysqldump]
password = ${mysql_password} " > /root/.my.cnf

/etc/init.d/mysql restart

mysql --password="" -e "SELECT 1;" 2>/dev/null && exit 1
mysql -e "SELECT 1;" 1>/dev/null || exit 1

rm /tmp/mysql-set-pass
Ответ написан
Комментировать
nazarpc
@nazarpc
Open Source enthusiast
Есть же в Ubuntu специальная команда для остановки сервисов:
sudo service mysql stop
Потом проверяете, получилось ли:
sudo service mysql status

Там же система инициализации может быть разная, возможно, она может ловит падение сервиса и переподнимает его самостоятельно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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