У меня есть пароль root в Linux. На этой машине есть сервер MySQL. Один из ini сайта был переписан, и теперь он не может получить доступ к базе данных mysql. У меня нет рута mysql для изменения пароля пользователя базы данных. Владелец сервера сейчас в отпуске, поэтому я не могу попросить его дать мне root-права mysql. Я могу сбросить пароль root mysql, но не хочу.
Я нуждаюсь:
Как сделать пункты 1 и 4?
Общее процедура сброса пароля выполняется путем создания файла инициализации, который сбрасывает пароль root. Затем перезапустите сервер с возможностью принудительного запуска этого сценария с привилегиями root в качестве пользователя root.
В примере сценария показано, как вы сбрасываете пароль root, но нет никаких причин, по которым вы не могли бы просто сбросить скрипт пароля пользователя, которого вы хотите сбросить.
Поэтому, если у вас есть возможность перезапустить сервер mysql и указать файл инициализации, вы можете пропустить шаги 1, 2 и 4 и просто запустить сценарий от имени пользователя root. На самом деле нет причин, по которым вам вообще нужно трогать учетную запись root.
Это можно сделать без ...
Как только вы войдете в Linux Box, чтобы создать себе временный корень с паролем t3mpp@assw0rd
выполните следующие шаги
ШАГ 01) service mysql restart --skip-networking --skip-grant-tables
ШАГ 02) В командной строке Linux введите mysql
и нажмите Enter
ШАГ 03) Запустите эту команду SQL
SELECT COUNT(1) RootLocalhostExists FROM mysql.user
WHERE user='root' AND host='localhost';
RootLocalhostExists
равно 0, остановитесь здесь. Оставьте комментарий в моем ответе.RootLocalhostExists
равно 1, перейдите к ШАГУ 04.ШАГ 04) Выполните эти команды SQL
CREATE TABLE mysql.user2 LIKE mysql.user;
INSERT INTO mysql.user2 SELECT * FROM mysql.user
WHERE user='root' AND host='localhost';
UPDATE mysql.user SET PASSWORD=PASSWORD('t3mpp@assw0rd')
WHERE user='root' AND host='localhost';
ШАГ 05) service mysql restart
Это выполнит ваши шаги 1-3.
Чтобы вернуть исходный корень mysql, сделайте следующее (Перезагрузка MySQL не требуется):
ШАГ 01) В командной строке Linux введите mysql -uroot -pt3mpp@assw0rd
и нажмите Enter
ШАГ 02) Выполните следующий SQL
DELETE FROM mysql.user WHERE user='root' AND host='localhost';
INSERT INTO mysql.user SELECT * FROM mysql.user2;
DROP TABLE mysql.user2;
FLUSH PRIVILEGES;
EXIT
Вот и все.
Попробуйте !!!
Если ваш сервер mysql работает на debian (или ubuntu или аналогичном), вы, вероятно, можете использовать debian-sys-maint
пользователь, а не пользователь root mysql. Смотреть в /etc/mysql/debian.cnf
Он имеет SUPER привилегии и может изменять пароль пользователя.