Невозможно установить пароль для пользователя root MySQL - PullRequest
2 голосов
/ 03 мая 2019

Я пытаюсь запустить MySQL на моем локальном хосте. Это никогда не случалось со мной раньше, но после установки sudo apt-get install mysql-server не запрашивал у меня начальный пароль.

После поиска ответов для «сброса» моего пароля и борьбы с правами доступа к каталогу я нахожусь в этом состоянии:

Решение mysqld_safe:

  • После перезагрузки компьютера mysql -u root -p спросит у меня пароль, и после того, как я его введу, он пожалуется на ERROR 1698 (28000): Access denied for user 'root'@'localhost'
  • Если я вместо этого попробую mysql -u root (без пароля), он скажет ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
  • Если я запускаю совет, который другие люди опубликовали по поводу сброса пароля через mysqld_safe --skip-grant-tables, то я сталкиваюсь с некоторыми икотами по пути:
    • Сначала я бегу sudo service mysql stop
    • Тогда sudo mysql_safe --skip-grant-tables скажет mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.
    • Я могу это исправить, если я сделаю sudo mkdir -p /var/run/mysqld и sudo chown mysql /var/run/mysqld
    • После этого запуск mysqld_safe будет выполняться с сообщением Starting mysqld daemon with databases from /var/lib/mysql и затем зависнет. И Ctrl + C не выводит меня из этого.
    • В новом окне терминала теперь я могу подключиться к mysql -u root и получить приглашение mysql>.
    • Я могу установить новый пароль с помощью use mysql; update user set authentication_string=password('0000') where user='root';flush privileges;, который сообщит мне, что он успешно обновил строку с сообщением Rows matched: 1 Changed: 1 Warnings: 1
    • Предупреждение только гласит: 'PASSWORD' is deprecated and will be removed in a future release.
    • И после всего этого я вернулся на круги своя: процесс все еще зависает, поэтому я должен перезагрузиться, потому что killall mysqld_safe говорит no process found. После перезагрузки и ввода нового пароля 0000 мне будет отказано в доступе.

Система Linux 4.15.0-48-generic #51-Ubuntu SMP.

Решение mysqladmin

Если я запускаю mysqladmin -u root password '0000' (без sudo), я получаю:

mysqladmin: сбой подключения к серверу на локальном хосте

ошибка: 'Доступ запрещен для пользователя' root '@' localhost ''

Если я запускаю его с sudo, я получаю:

mysqladmin: [Предупреждение] Использование пароля в интерфейсе командной строки может быть небезопасным.

Предупреждение. Поскольку пароль будет отправлен на сервер в виде простого текста, используйте ssl-соединение для обеспечения безопасности пароля.

Последний не говорит мне ничего относительно того, произошла смена пароля или нет; было ли ему отказано или нет (так как это предупреждение, а не ошибка, я бы предположил, что оно должно пройти), но в любом случае попытка соединения с 0000 по-прежнему говорит «доступ запрещен».

Любые советы о том, как это исправить, приветствуются.

1 Ответ

0 голосов
/ 04 мая 2019

Я не совсем решил проблемы с mysql напрямую; Однако для меня приемлемым решением было переключение на другое программное обеспечение для баз данных, но это все еще система MySQL, и она заставила меня работать. Поэтому, если кто-то застрянет на существующих решениях, которые работают не так, как я, возможно, это пригодится, чтобы помочь вам в пути и, наконец, снова написать код.

То, что я сделал, было:

  1. очищено mysql от моей системы
  2. Вручную удалили /etc/mysql и /var/lib/mysql (не знаю, был ли необходим этот шаг)
  3. apt clean, apt autoremove, apt update
  4. Установлено mariadb
  5. Выполнил эти инструкции , чтобы избавиться от ошибки тайм-аута
  6. Использовал метод mysqld_safe --skip-grant-tables для создания нового пользователя со всеми привилегиями, поскольку при подключении с root всегда происходил сбой

PHP + MariaDB теперь снова работает.

...