Я хотел иметь на своем ПК (с Windows 8.1 x64) только сервер MySQL, без Workbench или чего-то еще. Поэтому я скачал .zip
архив с dev.mysql.com/downloads . Это загрузка для Win64 на x86_64 версии 5.7.9 (MySQL Community Server (GPL)).
Я установил его как службу Windows, но mysql
базы данных не было, только information_schema
. Итак, я выполнил это:
mysql_upgrade.exe --upgrade-system-tables
И mysql
базы данных были созданы. Но наряду с этим что-то случилось с пользователем root, потому что я больше не мог получить доступ mysql
.
Поэтому я решил сбросить этот внезапно появившийся пароль (потому что до этого у меня его не было). В официальном руководстве я нашел следующее решение и запустил сервер следующим образом:
mysqld.exe --skip-grant-tables --console
Затем я открыл mysql
без пароля:
mysql.exe –u root
А затем попытался сбросить пароль root:
SET PASSWORD FOR 'root'@'localhost' = PASSWORD(‘passhere');
Но я получил эту ошибку:
ОШИБКА 1131 (42000): вы используете MySQL в качестве анонимного пользователя, и анонимным пользователям запрещено изменять пароли ".
Что это? Как я аноним? Все команды были выполнены в cmd.exe
рамках Администратора.
Что я должен сделать, чтобы сбросить пароль root в этой ситуации?
Обновление 1: я попытался проверить текущего пользователя:
SELECT USER(), CURRENT_USER();
Это дает:
+--------+----------------+
| USER() | CURRENT_USER() |
+--------+----------------+
| root@ | @ |
+--------+----------------+
Это странно, потому что я начал это так mysql.exe -u root
.
Затем я проверил таблицу пользователей:
SELECT user FROM mysql.user;
Это дает:
+-----------+
| user |
+-----------+
| mysql.sys |
+-----------+
Это еще более странно. Также нет поля пароля:
SELECT user, password FROM mysql.user;
ОШИБКА 1054 (42S22): неизвестный столбец «пароль» в «списке полей»
Поэтому я не могу изменить его пароль.
И я не могу создать нового пользователя:
CREATE USER 'root'@'localhost' IDENTIFIED BY 'passhere';
ОШИБКА 1290 (HY000): Сервер MySQL работает с
--skip-grant-tables
опцией, поэтому он не может выполнить этот оператор
Теперь я потерялся.
Обновление 2: я думаю, я сделал все неправильно с самого начала. Судя по всему, я как-то пропустил mysqld.exe --initialize
команду.
Итак, вот как я установил MySQL из .zip-архива, благодаря @RolandoMySQLDBA :
- Распакуйте архив, подготовьте
my.ini
. - Выполните
mysqld.exe --initialize
, получите временный пароль из.err
файла. Установите MySQL как сервис и запустите его
mysqld --install MySQL --defaults-file="d:/path/to/mysql/my.ini"
Подключитесь к нему
mysql -u root -p
с временным паролем.Изменить временный пароль:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NEWPASSWORD';
password
колонка была переименованаauthentication_string
.