Изменение пароля пользователя mysql на Centos7

Я установил mySQL на Centos7 vm, но у меня проблемы с входом в root. Я попробовал войти в систему без пароля или попробовать какие-либо по умолчанию (например, mysql, admin и т.д.). Я посмотрел файл my.cnf и там не было пароля. Я попытался сменить пароль, остановив службу и перезапустив ее с помощью mysqld_safe --skip-grant-tables &, но я понял, что mysqld_safe:command not found Я понятия не имею, что еще делать. Любые советы/идеи были бы высоко оценены!

Ответ 1

Какую версию mySQL вы используете? Я использую 5.7.10, и у меня возникла та же проблема с входом в систему как root

Существует две проблемы: почему я не могу войти в систему как root для начала и почему я не могу использовать mysqld_safe для запуска mySQL для сброса пароля root.

У меня нет ответа на установку пароля root во время установки, но вот что вы делаете, чтобы сбросить пароль root

Изменить исходный пароль пользователя root при установке можно, запустив

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

http://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html


  1. systemd теперь используется для наблюдения за MySQL вместо mysqld_safe (именно поэтому вы получаете ошибку -bash: mysqld_safe: command not found - она не установлена)

  2. Структура таблицы user изменилась.

Поэтому, чтобы сбросить пароль root, вы все равно запускаете mySQL с опциями --skip-grant-tables и обновляете таблицу user, но то, как вы это делаете, изменилось.

1. Stop mysql:
systemctl stop mysqld

2. Set the mySQL environment option 
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables"

3. Start mysql usig the options you just set
systemctl start mysqld

4. Login as root
mysql -u root

5. Update the root user password with these mysql commands
mysql> UPDATE mysql.user SET authentication_string = PASSWORD('MyNewPassword')
    -> WHERE User = 'root' AND Host = 'localhost';
mysql> FLUSH PRIVILEGES;
mysql> quit

*** Edit ***
As mentioned my shokulei in the comments, for 5.7.6 and later, you should use 
   mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
Or you'll get a warning

6. Stop mysql
systemctl stop mysqld

7. Unset the mySQL envitroment option so it starts normally next time
systemctl unset-environment MYSQLD_OPTS

8. Start mysql normally:
systemctl start mysqld

Try to login using your new password:
7. mysql -u root -p

Ссылка

Как сказано в http://dev.mysql.com/doc/refman/5.7/en/mysqld-safe.html,

Note

Начиная с MySQL 5.7.6, для установки MySQL с использованием RPM распределение, запуск и завершение работы сервера управляются системой несколько платформ Linux. На этих платформах mysqld_safe больше не установлен, потому что это не нужно. Для получения дополнительной информации см. раздел 2.5.10, "Управление MySQL Server с помощью systemd".

Что приведет вас к http://dev.mysql.com/doc/refman/5.7/en/server-management-using-systemd.html, где он упоминает systemctl set-environment MYSQLD_OPTS= в нижней части страницы.

Команды сброса пароля находятся внизу http://dev.mysql.com/doc/refman/5.7/en/resetting-permissions.html

Ответ 2

Я использовал приведенный выше совет Кевина Джонса со следующим изменением --skip-network для немного лучшей безопасности:

sudo systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --skip-networking"

[[email protected] ~]$ mysql -u root

Затем, когда я пытался сбросить пароль, я получил сообщение об ошибке, но поиск в другом месте подсказал, что я могу просто двигаться вперед. Сработало следующее:

mysql> select user(), current_user();
+--------+-----------------------------------+
| user() | current_user()                    |
+--------+-----------------------------------+
| [email protected]  | skip-grants [email protected] host |
+--------+-----------------------------------+
1 row in set (0.00 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'sup3rPw#'
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.02 sec)

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'sup3rPw#'
Query OK, 0 rows affected (0.08 sec)

mysql> exit
Bye
[[email protected] ~]$ systemctl stop mysqld
[[email protected] ~]$ sudo systemctl unset-environment MYSQLD_OPTS
[[email protected] ~]$ systemctl start mysqld

На тот момент я смог войти.

Ответ 3

Используйте приведенные ниже шаги для reset пароля.

$ sudo systemctl start mysqld

Reset пароль пользователя сервера MySql.

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

Вывод чего-то типа -:

 10.744785Z 1 [Note] A temporary password is generated for [email protected]: o!5y,oJGALQa

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

<pre>
    $ sudo mysql_secure_installation
</pre>
   Securing the MySQL server deployment.

   Enter password for user root: 

У вас успешно reset пароль root для сервера MySql. Используйте команду ниже, чтобы проверить подключение сервера mysql.

$ mysql -u root -p

http://gotechnies.com/install-latest-mysql-5-7-rhelcentos-7/

Ответ 4

Все,

Вот немного поворот с mysql-community-сервером 5.7 Я разделяю некоторые шаги, как reset пароль mysql5.7 root или пароль. он также будет работать centos7 и RHEL7.

step1. 1-я остановка баз данных

service mysqld stop

step2. 2-й файл /etc/my.cnf добавляет "skip-grant-tables"

vi /etc/my.cnf

[туздЫ] пропуск ГРАНТ-таблица

step3. 3-й запуск mysql

service mysqld start

step4. выберите базу данных mysql default

mysql -u root

mysql>use mysql;

step4. установить новый пароль

mysql> update user set authentication_string=PASSWORD("yourpassword") where User='root';

step5 перезапустить базу данных mysql

service mysqld restart

 mysql -u root -p

наслаждайтесь:)

Ответ 5

Пожалуйста, остановите все службы MySQL с помощью следующей команды /etc/init.d/mysqld stop После этого используйте

mysqld_safe --skip-grant-tables

он может нормально работать

Ответ 6

Для меня это работает так: 1. Остановить mysql: systemctl stop mysqld

  1. Задайте параметр mySQL environment systemctl set-environment MYSQLD_OPTS = "- skip-grant-tables"

  2. Запустите mysql с параметрами, которые вы только что установили. systemctl start mysqld

  3. Войти как root mysql -u root

  4. После входа в систему я использую FLUSH PRIVILEGES; сообщите серверу о перезагрузке таблиц грантов, чтобы операторы управления учетными записями работали. Если я не делаю этого, я получаю эту ошибку, пытаясь обновить пароль: "Невозможно найти подходящую строку в таблице пользователя"

Ответ 7

Для CentOS 7 и MariaDB 10.4 мне удалось выполнить следующие команды:

su -
systemctl set-environment MYSQLD_OPTS="--skip-grant-tables --user=mysql"
systemctl restart mariadb
mysql -u root

flush privileges;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';
flush privileges;
quit

systemctl unset-environment MYSQLD_OPTS
systemctl restart mariadb