У меня есть база данных MySQL, которую я «унаследовал», и мне не дали учетные данные администратора. Однако у меня есть доступ к коробке, на которой он работает. Есть ли способ восстановить учетные данные администратора или создать новые?
Прочтите и выполните глава о сбросе пароля root в Справочном руководстве MySQL.
Эта процедура запускает демон mysql без авторизации, позволяя вам подключаться без предоставления учетных данных. В этом режиме вы можете нормально подключаться, а также сбрасывать пароли и разрешения. После этого не забудьте снова запустить mysql с соответствующей авторизацией.
Если это ящик Debian / Ubuntu, существует специальная учетная запись, эквивалентная root, которая называется debian-sys-maint. Вы можете прочитать пароль в /etc/mysql/debian.cnf
Используя этот пароль, вы можете войти в mysql как debian-sys-maint, используя:
mysql --defaults-file=/etc/mysql/debian.cnf mysql
После входа в систему сделайте следующее:
update user set password=password('<new password>') where user='root';
flush privileges;
quit;
Теперь root должен быть доступен с вашим новым паролем:
mysql -uroot -p
Мой пользователь root не существует. На
CREATE USER root@localhost;
я получил
ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement
Решение было
mysqld_safe --skip-grant-tables &
mysql
INSERT INTO user (Host,User,Password) VALUES ('localhost', 'root', 'changethispassword');
UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';
FLUSH PRIVILEGES;
После этого я добавил все привилегии одну за другой с небольшой помощью этого:
mysql mysql -e "SELECT * FROM user WHERE User='root'\G"|grep N
(а этот можно и нужно автоматизировать больше)
Примечание: поиск правильного количества Y в INSERT
это PITA.
Как наступает на Справочное руководство по MySQL не очень понятны, я пытаюсь ответить здесь более простым языком. (этот ответ актуален для пользователей MacBook OSX):
my.cnf
. (Для меня это было помещено @ /Applications/XAMPP/xamppfiles/etc
. Вы можете просто поискать, если не можете его найти).my.cnf
файл в любом текстовом редакторе. "skip-grant-tables"
(без кавычек) в конце [mysqld]
раздел и сохраните файл. skip-grant-tables
вариант. Terminal
и беги mysql
команда mysql> UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> exit