Установка пароля root в новой установке mysql 5.7

11

Я пытаюсь установить MySQL в порцию CentOS Linux release 7.2.1511. Посмотрите на процесс установки:

# sudo yum install mysql-server

Вывод:

Dependencies Resolved

===========================================================================================================================================================================================================
 Package                                                 Arch                                    Version                                         Repository                                           Size
===========================================================================================================================================================================================================
Removing:
 mysql-community-client                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  109 M
 mysql-community-server                                  x86_64                                  5.7.10-1.el7                                    @mysql57-community                                  652 M

Transaction Summary
===========================================================================================================================================================================================================

Я управлял mysql Дэймон:

# sudo service mysqld start

Проверка сервиса:

# ps -ef|grep mysql
mysql     1371     1  0 22:17 ?        00:00:00 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid

Здесь возникает проблема, сводящая меня с ума. Я хочу установить пароль root в первый раз, поэтому я сделал:

# sudo mysql_secure_installation
// when password is required, I just type "enter key"

Но вывод: защита развертывания сервера MySQL.

Введите пароль для пользователя root: Ошибка: доступ запрещен для пользователя 'root' @ 'localhost' (используя пароль: НЕТ)

Погуглив ошибку, в 90% случаев решение заключается в вызове mysqld_safe --skip-grant-tables &команды:

service mysqld stop
mysqld_safe --skip-grant-tables &
mysql --user=root mysql
update user set Password=PASSWORD('new-password') where user='root';
flush privileges;
exit;

Но mysqld_safeвыдает ошибку «команда не найдена». Я тоже проверял sudo mysqld --skip-grant-tables &, но это ничего не делает. Я буду признателен, если вы направите меня в правильном направлении, чтобы установить пароль root. Заранее спасибо.

Manix
источник
Нужны эти двоичные файлы, чтобы быть в PATH. Или вам нужны полные пути. (Это больше вопрос о Linux, чем вопрос о MySQL.)
Рик Джеймс

Ответы:

18

Если вы просто запустите команду mysql под пользователем root, вам будет предоставлен доступ без запроса пароля, потому что аутентификация сокета включена для root @ localhost.

Это руководство вводит в заблуждение.

Единственный способ установить пароль - переключиться на собственную аутентификацию, например:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'test';
Вадим Смиланский
источник
Вы спаситель! Работай как шарм!
Зугор
9

В моем безумном исследовании решения я посмотрел /var/log/mysqld.logи нашел следующую строку:

[Примечание] Временный пароль генерируется для root @ localhost: abc123

Похоже, что MySQL 5.7+ генерирует случайный пароль при установке и запрашивается в этом файле.

Manix
источник
7

Используйте следующие шаги для сброса пароля:

$ sudo systemctl start mysqld

Сбросьте пароль root для сервера MySQL.

$sudo grep 'temporary password' /var/log/mysqld.log

Выведите что-то вроде:

10.744785Z 1 [Note] A temporary password is generated for root@localhost: o!5y,oJGALQa

Используйте указанный выше пароль во время сброса mysql_secure_installation процесса.

$ sudo mysql_secure_installation
Securing the MySQL server deployment.

Enter password for user root: 

Вы успешно сбросили пароль root сервера MySQL. Используйте команду ниже, чтобы проверить соединение сервера MySQL или нет.

$ mysql -u root -p

Смотрите мою статью: Установите последнюю версию MySQL 5.7 на RHEL / Centos 7

Эрвинд
источник
3

Все вышеперечисленное не работает для меня, и обратите внимание, я потратил час или больше, пытаясь все другие предложения с веб-сайта MYSql ко всему на SO, я наконец получил его работать с:

Примечание: хотя он показывал «Введите пароль для пользователя root», у меня не было исходного пароля, поэтому я просто ввел тот же пароль, который будет использоваться в качестве нового пароля.

Примечание: не было /var/log/mysqld.log только /var/log/mysql/error.log

  1. убить текущий pid mysqld
  2. запустите mysqld с помощью sudo / usr / sbin / mysqld &
  3. Запустите / usr / bin / mysql_secure_installation

    Вывод из mysql_secure_installation

    root @ myServer: ~ # / usr / bin / mysql_secure_installation

    Обеспечение безопасности развертывания сервера MySQL.

    Введите пароль для пользователя root:

    VALIDATE PASSWORD PLUGIN можно использовать для проверки паролей и повышения безопасности. Он проверяет надежность пароля и позволяет пользователям устанавливать только те пароли, которые достаточно безопасны. Вы хотите установить плагин VALIDATE PASSWORD?

    Нажмите y | Y для Да, любую другую клавишу для Нет: нет Использование существующего пароля для пользователя root. Изменить пароль для root? ((Нажмите y | Y для Да, любую другую клавишу для Нет): y

    Новый пароль:

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

    Удалить анонимных пользователей? (Нажмите y | Y для Да, любую другую клавишу для Нет): y Успешно.

    Обычно пользователю root разрешается подключаться только с «localhost». Это гарантирует, что кто-то не сможет угадать пароль root от сети.

    Запретить root-вход удаленно? (Нажмите y | Y для Да, любую другую клавишу для Нет): y Успешно.

    По умолчанию MySQL поставляется с базой данных «test», доступ к которой может получить каждый. Это также предназначено только для тестирования и должно быть удалено перед переходом в производственную среду.

    Удалить тестовую базу данных и получить к ней доступ? (Нажмите y | Y для Да, любую другую клавишу для Нет): y

    • Удаление тестовой базы данных ... Успех.

    • Удаление привилегий на тестовой базе данных ... Успех.

    Перезагрузка таблиц привилегий гарантирует, что все внесенные изменения вступят в силу немедленно.

    Перезагрузить таблицы привилегий сейчас? (Нажмите y | Y для Да, любую другую клавишу для Нет): y Успешно.

    Все сделано!

JGlass
источник