У меня есть база данных MySQL, которую я «унаследовал», и мне не дали учетные данные администратора. Однако у меня есть доступ к коробке, на которой он работает. Есть ли способ восстановить учетные данные администратора или создать новые?
Прочитайте и выполните главу о сбросе пароля root в Справочном руководстве MySQL.
Эта процедура запускает демон mysql без авторизации, позволяя вам подключаться без предоставления учетных данных. В этом режиме вы можете подключиться нормально, а также сбросить пароли и гранты. После этого не забудьте снова запустить mysql с соответствующей авторизацией.
Если это окно Debian / Ubuntu, то существует специальная учетная запись, эквивалентная корневому каталогу, называемая 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