Я установил mySQL на Centos7 vm, но у меня проблемы с входом в root. Я попробовал войти в систему без пароля или попробовать какие-либо по умолчанию (например, mysql, admin и т.д.). Я посмотрел файл my.cnf и там не было пароля. Я попытался сменить пароль, остановив службу и перезапустив ее с помощью mysqld_safe --skip-grant-tables &
, но я понял, что mysqld_safe:command not found
Я понятия не имею, что еще делать. Любые советы/идеи были бы высоко оценены!
Изменение пароля пользователя mysql на Centos7
Ответ 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
systemd
теперь используется для наблюдения за MySQL вместоmysqld_safe
(именно поэтому вы получаете ошибку-bash: mysqld_safe: command not found
- она не установлена)Структура таблицы
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
-
Задайте параметр mySQL environment systemctl set-environment MYSQLD_OPTS = "- skip-grant-tables"
-
Запустите mysql с параметрами, которые вы только что установили. systemctl start mysqld
-
Войти как root mysql -u root
-
После входа в систему я использую 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